computed_at and freshness_seconds in the
meta block. This page explains what they mean and the cadence behind
them.
Refresh cadences
The activity fields refresh on their own 60-second cadence, independently of
the 30-second chain snapshot they ride in. They are also the only fields on
the chain that describe a window (the last 24 hours) rather than an
instant, so they move even when nothing about the contract has changed.If the measurement goes unavailable they become
null rather than freezing
at their last value. A null there means not measured; a 0 means measured
and nothing traded.Reading freshness from a response
Every successful response includes:computed_at- wall-clock when the underlying cache was last writtenfreshness_seconds-now - computed_at, in seconds
freshness_seconds should be in the range
0-60. Values consistently > 90 mean the worker is having trouble
refreshing - check /v2/status for confirmation.
Operational status
/v2/status gives you a per-symbol
per-category health grid:
healthy- within the expected refresh windowdegraded- behind schedule but still usableunhealthy- dangerously stale; worker is having troubleunavailable- no cache at all (cold start or extended outage)
overall_status is the worst case across the grid - pessimistic
on purpose so monitoring alerts trip on the first real problem.
When you don’t care about freshness
For one-off historical queries (/v2/gex/stress-history,
/v2/options/iv/iv-rv, /v2/options/vrp), the data is daily/historical
and computed_at reflects when the historical row was written. Don’t
panic if freshness_seconds is huge - that’s normal for time-series.
Public liveness probe
/v2/health is a no-auth liveness probe for external
monitors (UptimeRobot, Datadog synthetic, etc.). Returns status: ok | degraded | unhealthy based on Redis + Postgres reachability. Always
HTTP 200 - the body has the truth, not the status code, so the
envelope contract stays clean.
Related concepts
Response format
Every meta field documented in detail.
Rate limits
Cadence considerations for polling - don’t poll faster than the
refresh.
