List the global public feed of peg state-transition alerts (all assets)
Public, unauthenticated feed of peg state transitions across ALL tracked assets, newest first. For alerts scoped to only the assets YOU subscribe to, use the authenticated GET /v1/me/alerts instead.
Query Parameters
Restrict to a single asset symbol.
Restrict to a single asset class.
Page size, must be in [1, 500]. Default 50. Out-of-range
values are rejected with 400 rather than silently clamped.
Inclusive lower bound on detected_at. Defaults to now − 7 days.
Response
Global alert feed, newest first
Consumer-facing calibration label, provisional | calibrated —
the self-describing form of monitoring_only, in the SAME vocabulary
the dispatcher puts on the webhook canonical event. provisional ⇔
monitoring_only=true.
provisional, calibrated 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.
PEGGED, DRIFT, DEPEG, CRITICAL, BLACK_SWAN, UNKNOWN True for a released monitoring_only (beta) asset — its calibration is
provisional, so this alert should be read as experimental. Always
present so public-ledger consumers can label beta rows.
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.
PEGGED, DRIFT, DEPEG, CRITICAL, BLACK_SWAN, UNKNOWN Signed discount (spread) captured at detection, as a rust_decimal
string. Lets the /events feed show each transition's spread magnitude
without a second per-row lookup. None for older rows where the
alerts.discount column is NULL — the client falls back to the asset's
live spread, so the field is additive (omitted, never null).
null until the dispatcher delivers this alert to its first fan-out
target (Telegram or a webhook subscriber); stamped once at least one
delivery succeeds. Stays null when the alert matched no subscriber —
nothing was delivered — so a null here means "not delivered", NOT
"delivery failed". Distinct from detected_at (when the engine saw the
transition) and from on-chain commit (a separate evidence path).