Skip to main content
GET
/
v1
/
assets
cURL
curl --request GET \
  --url https://api.pegana.xyz/v1/assets
[
  {
    "class": "<string>",
    "decimals": 123,
    "mint": "<string>",
    "name": "<string>",
    "peg_target": "<string>",
    "symbol": "<string>",
    "confidence": "<string>",
    "discount": "<string>",
    "intrinsic_usd": "<string>",
    "jitter_bps_24h": "<string>",
    "market_usd": "<string>",
    "series_24h": [
      123
    ],
    "sol_per_lst": "<string>",
    "state": "<string>",
    "thresholds": "<unknown>",
    "updated_at": "2023-11-07T05:31:56Z",
    "worst_abs_24h": "<string>"
  }
]

Query Parameters

class
string

Filter by asset class (e.g. lst, stable_fiat, stable_cdp, stable_yield, synthetic_leverage). Case-sensitive match against the engine's asset_class enum.

peg
string

Filter by peg target (e.g. SOL, USD, BRL). Matches the asset's declared peg, not its observed value.

Response

200 - application/json

All active assets with their latest snapshot

class
string
required
decimals
integer<int32>
required
mint
string
required
name
string
required
peg_target
string
required
symbol
string
required
confidence
string | null

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).

discount
string | null
intrinsic_usd
string | null
jitter_bps_24h
string | null

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.

market_usd
string | null
series_24h
number<double>[] | null
sol_per_lst
string | null

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.

state
string | null
thresholds
any

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.

updated_at
string<date-time> | null
worst_abs_24h
string | null

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.