Skip to main content
Loading market data…
GET/api/v1/statusFree tier · 10 req/min

Adapter health + per-table row counts — the public mirror of the internal /status page.

Call this from your own monitoring before you fire more expensive endpoint calls. The `banner` summarises system health; `adapters` lists every ingest worker with its last heartbeat; `tables` shows ingest volumes per table (so you can spot a stalled feed). Integrators typically check this on a 30-second cron.

Query parameters

This endpoint takes no query parameters.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

{
  banner: {
    status: "ok" | "degraded" | "down";
    summary: string;
    degradedCount: number;
  };
  adapters: Array<{
    source: string;
    status: "ok" | "degraded" | "down";
    message: string;
    metrics: Record<string, string>;
    lastHeartbeatMs: number;
    lastHeartbeatIso: string;
    secondsSinceHeartbeat: number;
  }>;
  tables: Array<{
    table: string;
    total: number;
    lastHourAdds: number;
    error?: string;
  }>;
}

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/status"
Responsejson
{
  "data": {
    "banner": {
      "status": "ok",
      "summary": "All 18 adapters healthy.",
      "degradedCount": 0
    },
    "adapters": [
      {
        "source": "binance_futures",
        "status": "ok",
        "message": "buffer=42 in=1204 out=1204",
        "metrics": { "buffer": "42", "in": "1204", "out": "1204" },
        "lastHeartbeatMs": 1744835110000,
        "lastHeartbeatIso": "2026-04-17T04:25:10.000Z",
        "secondsSinceHeartbeat": 4
      }
    ],
    "tables": [
      { "table": "liquidation", "total": 1824321, "lastHourAdds": 2105 },
      { "table": "open_interest", "total": 512410, "lastHourAdds": 360 }
    ]
  },
  "meta": { "total": 1 }
}

Notes

  • Anonymous-tier friendly — no key required. Use for uptime dashboards.
  • Polling more than once every 10s is wasteful — worker heartbeats are written on a ~5s interval.

Next

Check the error code reference, or get an API key to try the request against your own account.