Get v1assets 1
Path Parameters
Asset symbol — case-sensitive (e.g. jitoSOL, USDC, hyUSD)
Response
Latest snapshot for the asset
Pyth oracle confidence bucket: high | medium | low | unknown.
Scopes the PRICE-ORACLE confidence interval only (conf/price ratio), NOT
market-quote / route-depth reliability. Omitted when no discount snapshot
exists yet. Reflects the LATEST snapshot — an omitted value means "no
current signal" and MUST NOT be rendered as a positive bucket; the client
gates on updated_at freshness before showing it (hardening H1/H9).
Peg-jitter scalar over the trailing 24h (BSRV-03): peak-to-trough
dispersion of the discount, max(max_discount) - min(min_discount),
in the same signed-fraction units as discount. A cheap stability
measure (always >= 0) computed server-side once per scan instead of
every client recomputing it from the averaged series_24h. Trailing
24h, independent of the current-snapshot freshness bound. Omitted when
no discount_1m rows exist in the window.
Stake-pool SOL per share for Sanctum LSTs (rust_decimal, serialized as
a JSON string). Omitted for non-LST assets. Reflects the LATEST intrinsic
snapshot — read together with updated_at for freshness. NAV decomposition
is intrinsic_usd = sol_per_lst × SOL/USD.
Per-asset alert thresholds, served verbatim from assets.thresholds
JSONB (BSRV-01). Two shapes pass through unchanged: bps-keyed
{"drift_bps","depeg_bps","critical_bps"} for most assets, and the
CDP collateral-ratio form {"cr_drift","cr_depeg","cr_critical", "cr_black_swan"} for hyUSD. This is the AUTHORITATIVE source the
client should key band-gauge / chart threshold lines / "closest to
breaking" sort off — replacing any hand-maintained client table. The
column is re-synced to the engine's calibrated assets.toml values by
migration 0042_resync_asset_thresholds. Omitted only if the column
is NULL (never, given the NOT NULL constraint) or fails to decode.
Worst (largest-magnitude) absolute discount observed over the trailing
24h (BSRV-02), in the same signed-fraction units as discount
(e.g. 0.0123 = 123 bps). Computed as
max(greatest(abs(min_discount), abs(max_discount))) over the
discount_1m aggregate — discount is signed, so the abs is required to
catch the worst tick in EITHER direction. Trailing 24h, INDEPENDENT of
the current-snapshot 15-min freshness bound on discount. Omitted when
no discount_1m rows exist in the window.