Skip to main content
GET
Get an asset's current peg state

Path Parameters

symbol
string
required

Asset symbol — case-insensitive; resolved to canonical casing

Response

Current state + transition timestamp

asset
string
required
discount
string
required
intrinsic_usd
string
required
market_usd
string
required
since
string<date-time>
required

Timestamp of the most recent transition into the current state. Equals the current snapshot timestamp if the engine has only ever observed one state for this asset.

stale
boolean
required

true when updated_at is older than the 15-minute freshness bound the list/detail endpoints enforce — i.e. the feed has likely frozen. Unlike list/detail, /state still returns the last value rather than 404-hiding it; read this flag to fail safe. Consumers needing a tighter bound can derive their own from updated_at.

state
enum<string>
required

Class-aware peg state. Mirrors the engine PegState enum and the peg_state Postgres enum. Used for state, from_state, and to_state fields across the API.

The state is CLASS-AWARE: an LST reading a −1.4% discount (normal unstaking spread) is PEGGED, while a fiat stable at far less would be DRIFT. Trust this value directly rather than imposing a naive discount cut.

Available options:
PEGGED,
DRIFT,
DEPEG,
CRITICAL,
BLACK_SWAN,
UNKNOWN
updated_at
string<date-time>
required

Timestamp the current snapshot was computed (the latest discount_snapshots.ts). Distinct from since (state-transition time): this is the FRESHNESS signal. The engine stops writing snapshots when a feed goes stale ("missing data is not confirming data" — H8), so a frozen updated_at is exactly how a stale/frozen feed surfaces on this endpoint.

confidence
string | null

Pyth oracle confidence bucket: high | medium | low | unknown. The PRICE-ORACLE confidence-interval signal (conf/price ratio) — the field integrators should gate automation on alongside state. Mirrors the list endpoint's confidence. Collapses to unknown when the feed is stale (same as state), so a frozen feed cannot read as confidently pegged. Omitted only when no snapshot carries a confidence value (non-Pyth-dependent assets).

state_reason
string | null

Advisory machine-readable reason for the current state (mirrors discount_snapshots.state_reason and Receipt.state_reason).

Emitted today:

  • premium_sanity — engine NAV-sanity override: smoothed discount exceeded the premium-sanity bound, state forced to UNKNOWN (intrinsic anchor suspect).
  • stale_source — API layer: feed is >15 min stale, state collapsed to UNKNOWN; no fresh discount snapshot exists.

Reserved — not yet emitted (planned for depth-gate / oracle-crosscheck work): no_oracle_crosscheck | intrinsic_unavailable | shallow_market | nominal.

Omitted when null.