Skip to main content

The supported universe

Only verified, approved protocol adapters contribute positions. Every response says so with universe: "supported_adapters_only", and release_status is alpha_partial until the full-scope release gate passes, then v1. Protocols the API does not support are invisible to it: a wallet’s total is the total of its positions in the supported protocols, not its net worth. Supported protocols lists them.

Coverage vs valuation: two independent axes

Two separate questions are answered for every snapshot: Snapshot coverage (coverage.status):
  • complete_for_supported_protocols: every supported protocol was checked for this wallet.
  • partial: at least one protocol could not be fully checked (see its error_code).
  • stale: the snapshot is older than the freshness target (but at most 10 minutes old); it is served at once while a refresh runs. A snapshot older than 10 minutes is never served: the request returns 202 and runs a fresh scan.
  • pending: reserved for a snapshot still being built; never returned in a 200 (you get a 202 instead).
Per-protocol coverage (coverage.protocols[].status): complete (checked, so any absence is real), partial (some accounts could not be read), error (the adapter failed; error_code says why), not_applicable (nothing to check for this wallet) and skipped (not run: for example ADAPTER_QUARANTINED, ADAPTER_DISABLED, ADAPTER_NOT_APPROVED, BUDGET_EXCEEDED). unsupported_programs_detected is null when the check was not done. The two axes combine: coverage can be complete while valuation is partial (we found everything but could not price a token), or coverage partial while every found leg is priced. Absence of a position is trustworthy only for protocols listed complete. Accuracy follows from both: amounts come exactly from chain state; a USD figure is shown only when a qualified source priced it (valuation_status priced), or labelled indicative (thin market) or estimated (an accrual not yet booked on chain). total_value_usd is null whenever either axis is incomplete, with total_null_reasons saying which; known_value_usd still reports what could be priced.
GET /v1/solana/wallets/hmrMmA2tRn3LvzJVRWp61MMBhEppATWnQnD7HyqxJvo/defi-positions → 200 (captured 2026-11-12 from local positions-perps)

Null, not zero

null is never 0. An unknown amount or value is null; a real zero is the string "0". Never sum a null as zero: read total_null_reasons or the leg’s valuation_status instead.
Unknown values are null, never "0". A verified empty, complete universe gives total_value_usd: "0" and known_value_usd: null. Amounts are strings: amount_raw is the atomic integer and amount the exact decimal (with decimals). USD values are decimal strings too. Parse them with a decimal library; floats lose precision.
GET /v1/solana/wallets/4kwmwFxgKnFb3nEDd149KLNCAJLSvgPVTWAQM9qUCJw1/defi-positions → 200 (captured 2026-11-12 from local positions-empty)