Staking
Three read operations. Two are anonymous, one requires an API key.Setup
The two anonymous operations need no key:Amounts are raw integer strings
Fields ending inRaw, plus accumulatedRewardsLamports, are unsigned integer strings in the token’s base units. aprPercent is a decimal string. Parse raw amounts with BigInt and decimals with a decimal library — never Number.
Pool state
Cached
public, max-age=10, stale-while-revalidate=30 with an ETag. Rate policy public-read-cheap.
Leaderboard
The top 100 wallets by weighted stake.{ data: [...] }. It is not cursor paginated — the top 100 is the whole result, and there is no way to page past it.
Ranking is by weighted stake, so a smaller position on a longer lock can outrank a larger one on a shorter lock. Cached
public, max-age=30, stale-while-revalidate=120 with an ETag. Rate policy public-read-expensive.
Your positions
Cursor paginated with
cursor and limit, returning { data: [...], page: { nextCursor, hasMore } }. Never cached — the response is private, no-store on the api-key-read rate policy. See Conventions.
Raw HTTP
From a server shell, never a browser:Reads only
The v2 API exposes staking reads. There is no public API to enable staking, change the allocation, stake, unstake, or top up rewards. Those are creator-dashboard and app flows. See Staking for the product rules: lock periods, weighting, and how rewards accrue.Errors
Full problem-details shape lives in Errors.
Next
- Fees — the fee state that feeds
allocationBps. - Tokens and Market Data — anonymous public reads.
- Scopes — what each scope unlocks.