Skip to main content
Every v2 response carries 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 written
  • freshness_seconds - now - computed_at, in seconds
For a healthy 30s endpoint, 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:
Each cell is one of:
  • healthy - within the expected refresh window
  • degraded - behind schedule but still usable
  • unhealthy - dangerously stale; worker is having trouble
  • unavailable - no cache at all (cold start or extended outage)
The 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.

Response format

Every meta field documented in detail.

Rate limits

Cadence considerations for polling - don’t poll faster than the refresh.