The supported universe
Only verified, approved protocol adapters contribute positions. Every response says so withuniverse: "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 itserror_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 returns202and runs a fresh scan.pending: reserved for a snapshot still being built; never returned in a 200 (you get a 202 instead).
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.
Captured example
Captured example
GET /v1/solana/wallets/hmrMmA2tRn3LvzJVRWp61MMBhEppATWnQnD7HyqxJvo/defi-positions → 200 (captured 2026-11-12 from local positions-perps)Null, not zero
Unknown values arenull, 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.
Captured example
Captured example
GET /v1/solana/wallets/4kwmwFxgKnFb3nEDd149KLNCAJLSvgPVTWAQM9qUCJw1/defi-positions → 200 (captured 2026-11-12 from local positions-empty)