Skip to main content
Use indexed API data for user activity. Do not rely on browser-side RPC event scanning for partner apps.

Endpoints

EndpointUse
GET /api/v1/activity?wallet=0x...User deposits, withdrawals, claims, and indexed vault activity
GET /api/v1/redeems?wallet=0x...Grouped async redeem lifecycle rows
GET /api/v1/actions/status?wallet=0x...&txHash=0x...Normalized lifecycle status for a recently submitted action
GET /api/v1/actions/status?wallet=0x...&redeemId=1Normalized lifecycle status for a redeem request
GET /api/v1/historyVault snapshot chart data

Gate

Only show activity as reliable when:
health.ready.activity === true
If false, show the user’s balances from live reads but mark history/activity as temporarily stale.

UX requirements

  • Pending redeem requests must remain visible.
  • Claimable requests should show a primary claim action.
  • Pending requests should show cancel as a secondary action.
  • Claimed/cancelled rows should stay in history.

Action status

After a partner submits a transaction, poll action status instead of showing a raw transaction hash as the only feedback.
const status = await shlp.getActionStatus({
  wallet: userAddress,
  txHash,
});

if (status.status === "indexing") {
  showPending("Waiting for the transaction to be indexed.");
}

if (status.status === "waiting_for_hlp_unlock") {
  showPending(status.steps.find((step) => step.kind === "hlp_unlock_wait")?.message);
}
The response includes ordered steps so partner apps can render a clear progress component for deposit, instant redeem, queued redeem, cancel, and claim flows.