Choose a workflow
Pattern 1: Vault catalog and market discovery
To display available investment vaults and their current performance:- List all vaults: Call
GET /v1/vaultsto fetch the catalog of deployed SuperVaults. Filter bystatus: "active"for current deposit targets, but retain inactive vaults for historical portfolio views. - Fetch vault metadata: Call
GET /v1/vaults/{vault}to retrieve contract addresses, underlying assets, decimals, and operational state. - Fetch trailing yield: Call
GET /v1/apy?vault={vault}to obtain the official trailing 7-day share price APY (pps_apy). - Fetch benchmark rates: Call
GET /v1/market-ratesto compare vault yield against external reference benchmarks (such as Morpho, Aave, and Kaia ecosystem rates).
Pattern 2: Wallet portfolio screen
To present a complete portfolio view for a connected user wallet:- Query current balances: Call
GET /v1/balances?account={walletAddress}&at={timestamp}.atis required (e.g.at=2026-09-01T00:00:00Z); pass the current time or a specific historical boundary. A request withoutatreturns400. - Decompose the total balance and share holdings:
- Total managed assets (
totalValue): The combined sum of active positions and pending redemption claims (positionValue + redemptionReceivable,[Unit: asset]). - Active share balance (
shares): Raw vault LP token balance held by the user ([Unit: shareToken], metadata defined inshareToken). - Active position value (
positionValue): Capital actively deployed in the vault earning daily yield (shares * PPS,[Unit: asset]). - Redemption receivables (
redemptionReceivable): Capital that has undergone a redemption request and is in cooldown or awaiting claim ([Unit: asset]). Preserves 100% principal as a fixed non-earning claim. - Total balance identity:
- Total managed assets (
- Display cost and unrealized gain:
- Show
costBasisas the net remaining invested capital ([Unit: asset]). - Show
unrealizedPnl = positionValue - costBasisas the unrealized gain on active shares ([Unit: asset]).
- Show
- Preserve quality flags: Inspect
quality.status. If historical acquisition evidence is still indexing,costBasisandunrealizedPnlmay be returned asnullwhile verified balances remain available. Preserve thenullstatus rather than displaying zero.
Pattern 3: Transaction and activity stream
To render an account’s transaction history:-
Call account activity: Call
GET /v1/accounts/{account}/activitywith the optional filterstype(position,redemptionorbalance) andvault, and paginate withlimit(1~100) andcursor. The endpoint has nostart/endtime filters; sending them returns400. -
Classify rows by
type, then byoperation: Every row carries atypediscriminator equal to thetypefilter value that selects it.positionandbalancerows carry an uppercaseoperationfield;redemptionrows have nooperationand carrystatusinstead. There are nodeposit,redemption_request,claim,transfer_inortransfer_outvalues.operationvalues:MINT: New units are minted to the account. On apositionrow this is a deposit that issues vault shares.BURN: Units are burned from the account. On apositionrow this is a share burn made directly by the account.SEND: Units leave the account in a transfer;sharesis negative on apositionrow. A redemption submitted through the router appears as aSENDof shares to the router together with aredemptionrow.RECEIVE: Units arrive in the account in a transfer, including an in-kind custody migration.LOCKUP(balanceonly): The account’s locked amount changes;amountis signed andlockedshows the result.FETCH(balanceonly): A balance snapshot read from the chain when the token is first tracked for the account. It is not a transfer:amountis 0 andtransactionHashisnull.
redemptionrows:statusispendinguntil settlement andclaimedafterwards. The claim does not produce a separate row; the same row gainsclaimedAt,claimTransactionHashandreceivedAssets.operationis published as a nullable string, so handle an unrecognized ornullvalue without failing. - Netting rule: The activity feed exposes transaction-level netting. If multiple operations occur in a single transaction, inspect the net flow to match the user’s on-chain balance change.
Pattern 4: Withdrawal lifecycle tracker
Redemptions in SuperEarn follow a two-step Request-and-Claim process via the CooldownVault to ensure orderly liquidity management:
Key operational considerations
- Non-earning during cooldown: Once a redemption request is confirmed on-chain, the burned shares no longer participate in vault share-price growth. The principal is 100% protected and locked as a nominal claim.
- Liquidity buffer: Before calling
claimdirectly, check the vault’s available cash reserves viaGET /v1/allocations/vaults/{vault}/liquidity. In normal operations, protocol keepers automatically execute claims on behalf of users as liquidity allows.
Pattern 5: Pagination, cursors, and query rules
When iterating through large historical datasets or account histories:- Cursor pagination: All paginated list endpoints (e.g.
/v1/earnings,/v1/harvests,/v1/accounts/{account}/activity) return apageobject withpage.nextCursorandpage.hasMore. Passpage.nextCursoras thecursorquery parameter in the subsequent request./v1/balancesreturns a single snapshot and is not paginated. - Empty intermediate pages: Continue fetching until
page.hasMoreisfalse(page.nextCursoris thennull). Intermediate pages may occasionally contain zero items if non-matching records were filtered internally. - Short pages: On
/v1/earningsinterval queries, a page may contain fewer rows thanlimitbecause of a server work budget, so always followpage.nextCursoruntilpage.hasMoreisfalseinstead of stopping at a short page. - Timezones and cutoffs:
- Timestamps in query parameters support full ISO-8601 formatting (e.g.
start=2026-09-01T00:00:00+09:00). GET /v1/harvestsrequires bothstartandendas whole-second RFC 3339 timestamps with an explicit offset (e.g.start=2026-09-01T00:00:00Z); a date-only value such asstart=2026-09-01returns400.- Use
timezone=Asia/Seoulor specify an offset when requesting calendar intervals (interval=dayorinterval=month). - Use
cutoff=HH:mm:ssto set custom local closing hours.
- Timestamps in query parameters support full ISO-8601 formatting (e.g.
Integration checklist
- Use
totalValue(orpositionValue + redemptionReceivable) to represent a user’s complete managed balance. - Retain raw integer precision in contract atoms and divide by token decimals (10^6) only for display.
- Inspect
quality.statusandquality.reasonson every response; preservenullvalues where evidence is pending. - Handle cursor-based pagination completely: follow
page.nextCursoruntilpage.hasMoreisfalse. - Direct users through
SuperEarnRouterfor deposits and withdrawals; do not interact withCooldownVaultdirectly.