Browse API docsStatus JSON

Status JSON

How fresh ClaudeMon's data is: a summary and every source's health in one read. It measures our collection, not whether the labs are up.

GET /api/v1/status

/status.json serves the same JSON. See also the status page and files.

Parameters

assertstringOptional
1 answers 503 instead of 200 when summary.ok is false, so an uptime monitor alerts even if the scheduler stopped.

Every /api/v1 endpoint also takes pretty and format. See views.

Response

Example response
Response503 application/json
{
  "summary": {
    "ok": false,
    "sources": 70,
    "fresh_percent": 94.3,
    "late": 0,
    "stale": 2,
    "errors": 2,
    "checks_last_hour": 1648,
    "ticks_last_hour": 60,
    "last_tick_at": "2026-10-21T09:03:53.481Z",
    "last_tick": {
      "status": "ran",
      "ingest": true,
      "due": 36,
      "claimed": 36,
      "outcomes": {
        "unchanged": 29,
        "changed": 7
      },
      "duration_ms": 15983,
      "finished_at": "2026-10-21T09:04:09.464Z"
    },
    "ingest": true,
    "version": "6e3c0981-5ff6-4df6-b7d2-d6ad27809c52"
  },
  "sources": [
    {
      "id": "anthropic-claude-apps-changelog-file",
      "lab": "anthropic",
      "product": "anthropic.claude-apps",
      "shape": "changelog-file",
      "interval_seconds": 240,
      "state": "ok",
      "last_checked_at": "2026-10-21T09:02:44.081Z",
      "last_success_at": "2026-10-21T09:02:44.081Z",
      "last_changed_at": "2026-10-17T22:14:29.165Z",
      "last_new_item_at": null,
      "next_check_at": "2026-10-21T09:06:44.081Z",
      "consecutive_failures": 0,
      "last_error_class": null
    },
    {
      "id": "anthropic-claude-code-changelog-file",
      "lab": "anthropic",
      "product": "anthropic.claude-code",
      "shape": "changelog-file",
      "interval_seconds": 240,
      "state": "ok",
      "last_checked_at": "2026-10-21T09:02:40.108Z",
      "last_success_at": "2026-10-21T09:02:40.108Z",
      "last_changed_at": "2026-10-21T03:35:54.939Z",
      "last_new_item_at": "2026-10-21T03:22:56.178Z",
      "next_check_at": "2026-10-21T09:06:40.108Z",
      "consecutive_failures": 0,
      "last_error_class": null
    }
  ]
}
Live response from this deployment, fetched when this page rendered. Showing 2 of 74 sources.

summary and sources, every source including disabled ones. Each source has id, lab, product, shape, interval_seconds and the health fields inline.

The summary object

okboolean
True when a tick started in the last 5 minutes, no completed failure is awaiting recovery, no current tick has exceeded its 2-minute running lease, and no enabled source is Stale. A lock-only tick cannot clear a failure.
sourcesinteger
Enabled sources.
fresh_percentnumber
The share of enabled sources that are OK, one decimal.
lateinteger
Enabled sources that are Late.
staleinteger
Enabled sources that are Stale.
errorsinteger
Enabled sources that are Failing (error).
checks_last_hourinteger
Source checks started in the last hour.
ticks_last_hourinteger
Recorded ticks in the last 60 whole minutes, excluding the current incomplete minute. Fewer than 60 exposes missing minutes.
last_tick_atstring or null
When the scheduler last ran.
last_tickobject or null
What the latest scheduled minute recorded, including its terminal status and finished_at when available. Completion order determines recovery even if an older minute finishes last.
ingestboolean
Whether this deployment checks sources at all.
versionstring
The deployed Worker version ID.

Headers

Cache-Control
no-cache. No ETag.

Response views