Who this is for. This endpoint feeds a provider’s NOC dashboard or a monitoring integration — “which of my buildings are down right now, and how flaky has this one been this week.” It is deliberately not an incident feed: there is no cause, no operator notes, no estimated restore time, no switch/interface identity, and no subscriber/affected counts. A provider reads where, never how or whose. These fields are absent on purpose, not omitted by oversight.

Endpoint

Auth: X-API-Key: krnl_... with the provisioning:read scope. A key scoped provisioning:write also passes — write implies read.

Scope of the answer

Every live building in your coverage footprint is reported, whether or not you have subscribers there — this is a coverage-scoped read, not a subscription-scoped one. A building your account covers but currently has no customers in still shows up. Buildings still in planning, provisioning or testing are not listed — only buildings whose pipeline status is live are included. Only building-level and NOC-level outages are reflected. A single-line (per-customer loop) fault never appears here, however long it has been open. An empty buildings array with next_cursor: null means you have no live covered buildings right now — not that something failed. If that is unexpected, coverage has not been configured for your provider yet.

Query parameters

Results are sorted by building_id ascending. That fixed order is what makes cursor stable and resumable — paging through does not skip or repeat a building relative to where you left off. An out-of-range limit or an unrecognized status value returns 422.

Response — 200 OK

Polling

Poll no faster than every 15 seconds. The status fold behind this endpoint is cached per provider for 15 s; a tighter loop just replays the same cached result against your own rate-limit budget — which is exactly what an unchanged generated_at between two calls tells you. Polling faster than every 15 seconds gains nothing.

Errors

Treat 503 as unknown, never as all-clear. The endpoint never degrades to an empty or all-ok 200 on an internal failure — an empty list would read as “your whole footprint is fine,” which is exactly the false signal this surface is built to avoid. A 503 means the fold could not be computed; retry rather than assuming nothing is wrong.