Skip to main content
GET /v1/monitoring/status returns a single snapshot of your whole monitoring program: how your watches are doing, how fresh each connected office is, and when the pipeline was last verified end to end. It is the API behind the dashboard Monitoring page. Scope: portfolios:manage.

Response shape

{
  "object": "monitoring_status",
  "watches": {
    "total": 412,
    "by_health": {
      "healthy": 401,
      "lagging": 6,
      "degraded": 2,
      "paused": 3,
      "pending": 0,
      "unsupported": 0
    }
  },
  "offices": [
    {
      "office_code": "uspto",
      "pipeline_status": "ok",
      "coverage_through": "2026-07-06T23:59:59Z",
      "last_completed_sync_at": "2026-07-07T06:10:00Z",
      "last_search_indexed_at": "2026-07-07T06:24:00Z",
      "slo_hours": 48
    }
  ],
  "pipeline": {
    "last_verified_end_to_end_at": "2026-07-07T08:00:00Z",
    "last_real_record_alert_at": "2026-07-07T02:14:00Z",
    "verification": "canary"
  },
  "request_id": "req_..."
}

Blocks

watches

An aggregate over every one of your watches, counted by health state. The by_health object always carries all six states, so a state with no watches reports 0 rather than being omitted. total is the count of your non-deleted watches. This block is scoped strictly to your organization.

offices[]

Per connected office, global pipeline freshness (the same data for every customer, so it is safe to cache and share):
FieldMeaning
pipeline_statusok when coverage is within the office freshness target; lagging when it is stale or there is no coverage signal yet.
coverage_throughThe office-DATA time we have processed the office through. This is source data time, never wall-clock.
last_completed_sync_atWhen we last finished pulling from the office.
last_search_indexed_atWhen that pull became searchable.
slo_hoursThe internal freshness target (in hours) used to compute pipeline_status. This is an operational default, not a contractual SLA.
Only live offices appear here.

Null-honest pipeline verification

The pipeline block reports two independent signals, and both follow one rule: a stale value is never presented as a fresh verification.
  • last_verified_end_to_end_at — a synthetic change is injected into the live pipeline on a short interval and checked end to end. This timestamp is the last time that check passed. It ages visibly while everything is healthy. If no recent check has passed (the key is absent, or the most recent one is older than our freshness horizon), this field is null rather than a misleadingly old timestamp.
  • last_real_record_alert_at — a separate, slower signal: the last time the representative real-record path actually saw an office-originated change. The synthetic heartbeat proves the bus is alive right now; this proves the true customer path is delivering real changes. Same null rule.
null on either field means “we cannot currently assert this was verified recently”, not “verified at the epoch”. Treat null as unknown, never as fresh. verification is always "canary" and names the mechanism behind the timestamps.

What it does not tell you

This endpoint certifies that evaluation is happening and reports how fresh each office is. It does not certify that every relevant mark was surfaced — that is bounded by your search strategy and by office coverage. For per-watch evidence of evaluation over a period, use the attestation endpoint.