Skip to main content
For what monitors, incidents and the public status page do, see Uptime and public status page. The endpoints take a signed-in session or an API token (see API overview).
Reading needs monitoring.manage, proxy.manage or incidents.manage; changing needs monitoring.manage. Creating, editing and updating incidents also accepts incidents.manage (the built-in Helpdesk role); deleting one doesn’t. On a DNZ secondary following a primary, changes are refused: manage monitors on the primary.

Endpoints

A monitor

Answers add status (up, degraded, down, unknown, paused), state_since, checked_at, latency_ms, status_code, error, recent ([unix seconds, ms or null], newest last), days (90 days: checks, down, degraded, uptime, latency_ms, level, incidents, and filled: how many of the checks stand for time DNZ wasn’t checking, filled in by incidents), uptime_24h, uptime_7d, uptime_30d, uptime_90d, avg_latency_ms and open_incident. A check (/check, /test) answers {"ok": true, "slow": false, "latency_ms": 42, "status_code": 200, "error": ""}.

An incident

impact is minor, major, critical or maintenance; status is investigating, identified, monitoring or resolved; message is the first update. Written afterwards, it takes started_at, resolved_at (it is then resolved) and at (the first update’s time; default: when it was resolved, else now), or gap (a gap’s id: its times unless given). Times are RFC 3339 or a wall-clock time on the server’s clock (2026-11-01 13:04, what a datetime-local field sends), never in the future (up to 2 minutes ahead counts as now), and in order: started, updates, resolved; else 400 says which. The newest update sets the status; an at before it fills in the timeline and leaves the status as it is (not as resolved). Answers add automatic, cause (what a failing check saw, never on the public page), resolved_at, duration_secs and updates (newest first: status, message, at, author; an empty author is DNZ).

The public page’s settings

The page as JSON

/status.json carries what the public page shows, for scripts and widgets, and nothing more. It needs no sign-in, answers with Access-Control-Allow-Origin: *, and a page that is off answers 404.