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
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):
| Field | Meaning |
|---|---|
pipeline_status | ok when coverage is within the office freshness target; lagging when it is stale or there is no coverage signal yet. |
coverage_through | The office-DATA time we have processed the office through. This is source data time, never wall-clock. |
last_completed_sync_at | When we last finished pulling from the office. |
last_search_indexed_at | When that pull became searchable. |
slo_hours | The internal freshness target (in hours) used to compute pipeline_status. This is an operational default, not a contractual SLA. |
Null-honest pipeline verification
Thepipeline 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 isnullrather 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.