Skip to main content

Snapshots, slots and freshness

as_of is when the snapshot was built. Reads are not atomic: observed_slots gives the slot range read and snapshot_consistency is normally multi_slot. Each leg’s context.as_of_slot says when its amount was exact. freshness gives age_seconds, stale and max_age_seconds. A stale snapshot comes with refreshing: true and a refresh_job_id. After an adapter failure, a position may be carried forward from the previous snapshot (flag carried_forward). Data freshness has the numbers.

Data freshness

How old is what you see?
  • Snapshot freshness target: 120 s (SNAPSHOT_FRESHNESS_S). An older snapshot is served immediately with freshness.stale: true and refreshing: true, and a refresh scan starts; poll refresh_job_id or request again later. While stale, coverage.status is stale and total_value_usd is null (coverage_incomplete).
  • Cold wallets: the first request returns 202; retry_after_seconds is 3 when the scan was kicked at once (otherwise the seconds to the next scheduled run plus 5). Typical scans take 2–6 s.
  • freshness_seconds (0…86,400) sets how old a snapshot you accept. Lower values cause more scans and can hit the cold-scan limit; freshness_seconds=0 always marks the stored snapshot stale.
  • Time and slots: as_of is when the snapshot was built; observed_slots is the slot range read; snapshot_consistency: multi_slot is normal because reads are not atomic.
  • Price age: each leg has price_as_of. A built-in on-chain price is priced for up to 300 s, a TokenPrices price for up to 900 s; older prices are stale (shown, not counted) up to 24 h and not served beyond that. LST redemption rates are stale from an epoch lag of 3 (a warning at 1–2). Prices refresh every 2 minutes.
  • Lending interest is valued as of each reserve’s last refresh: the leg’s context.as_of_slot says which slot, an old reserve sets the interest_stale flag, and no interest is projected forward (D-15).
  • Retention: snapshots are kept 7 days.
  • Measured numbers (latency, cold-scan time, RPC calls per scan) are in Performance and freshness.
GET /v1/solana/wallets/GSyXx6WRm2o6Qu4RWxTH17swLZKpTKQdQTS2uGcus1NF/defi-positions?freshness_seconds=0 → 200 (captured 2026-11-12 from local positions-stale)