Introduction
Multi-protocol monitoring and health checking API
Accept an invitation
Accept an invitation
Acknowledge an incident
Acknowledge an incident
Bind a single channel to a check
Bind a single channel to a check
Add a comment to an incident
Appends a free-text comment to the incident's timeline as an append-only `incident.comment` event authored by the calling user (`source: 'web'`). Comments are read back through the incident events endpoint. Slack thread replies produce the same event type with `source: 'slack'`. Append-only — no edit or delete.
Pre-provision an unverified paging contact for a member
Lets an admin add a phone or WhatsApp contact for another member, in UNVERIFIED state. The contact becomes pageable only after its owner completes the normal verification round-trip — an admin can never create or flip a contact to verified. Other contact types are refused.
Add member to organization
Add member to organization
Add a notification contact (and its route) for the caller
Add a notification contact (and its route) for the caller
Approve a membership request
Approve a membership request
Cancel a discovery scan
Admin only. Cancels the scan and drops every pending fan-out child chunk. Children already running finish naturally.
Cancel a pending job
Cancel a pending job
Cancel one of the caller's membership requests
Cancel one of the caller's membership requests
Change (or set) the authenticated user's password
Rotates the caller's password without an emailed reset token. `currentPassword` is required when the account already has a password; for an SSO-only account (`hasPassword: false` on `/api/v1/auth/me`) it is ignored and this call sets the initial password. All of the caller's *other* sessions are revoked; the calling session and any personal access tokens keep working. A confirmation email is sent.
Clone an existing check
Creates a near-identical copy of an existing check. Runtime state (status, results, incidents, scheduler row) is not copied; labels and channel bindings are re-linked to the new check.
Confirm a phone contact with its verification code
Constant-time compares the submitted code; after 5 failed attempts the code is invalidated and a new one must be requested. Success stamps the contact verified.
Confirm a pending registration with an emailed token
Confirm a pending registration with an emailed token
Create a notification channel
Create a notification channel
Add a dependency edge to a check
Add a dependency edge to a check
Create a check group
Create a check group
Create monitoring check
Create monitoring check
Create an escalation policy
Create an escalation policy
Create an invitation
Create an invitation
Create a job (org admin, allowlisted types only)
Enqueues a background job. **Requires org admin** — a member with the
Create a maintenance window
Create a maintenance window
Request to join an organization
Request to join an organization
Mint a single-use Telegram connect link for the caller
Returns a `https://t.me/<botUsername>?start=<token>` deep link carrying
Create an override on an on-call schedule
Create an override on an on-call schedule
Create an on-call schedule
Create an on-call schedule
Create a new organization
Creates a new organization, makes the caller its OWNER, and returns a session scoped to the new org. Any authenticated user may create an organization; it is always created for the caller (the owner is taken from the access token, never from the request body). A slug freed by a previously deleted organization may be claimed again.
Create a scheduled uptime report
Create a scheduled uptime report
Create a severity
Create a severity
Create a service-level objective
Create a service-level objective
Append a narrative update to a published incident
Append a narrative update to a published incident
Publish a hand-written incident on a status page
Publish a hand-written incident on a status page
Add a check as a resource to a section
Add a check as a resource to a section
Create a section
Create a section
Create a status page
Create a status page
Create a status update
Create a status update
Create Personal Access Token for organization
Create Personal Access Token for organization
Edge-TLS custom-domain check (public)
Returns 204 when the queried domain currently resolves to a verified, enabled, public status page, and 404 otherwise. No body. This is the contract for Caddy on_demand_tls / cert-manager gating on an external TLS edge; it is unchanged by, and independent of, the server's own in-server ACME support (config acme.enabled).
Delete a notification channel
Delete a notification channel
Remove a dependency edge
Remove a dependency edge
Delete a check group
Delete a check group
Soft delete check
Soft delete check
Remove an email suppression (re-subscribe)
Remove an email suppression (re-subscribe)
Delete an escalation policy
Delete an escalation policy
Delete a file
Delete a file
Clear a member's identity on an integration
Clear a member's identity on an integration
Revoke a pending invitation
Revoke a pending invitation
Delete a maintenance window
Delete a maintenance window
Delete an override
Delete an override
Delete an on-call schedule
Delete an on-call schedule
Clear the organization logo
Removes the organization's logo. **Owner only.** An uploaded image is retired at the same time, so its public URL stops resolving.
Delete an organization
Permanently deletes the organization. **Owner only** — an admin is refused with 403 FORBIDDEN. The request body must repeat the organization slug as an explicit confirmation; a mismatch is a 422 VALIDATION_ERROR.
Delete a scheduled uptime report
Delete a scheduled uptime report
Delete a severity
Delete a severity
Delete a service-level objective
Delete a service-level objective
Remove a resource from a section
Remove a resource from a section
Delete a section
Delete a section
Delete a status page
Delete a status page
Delete a status update
Delete a status update
Delete a system parameter
Soft-deletes a system parameter.
Disable the iCal feed for an on-call schedule
Disable the iCal feed for an on-call schedule
Dismiss a single discovered check
Dismiss a single discovered check
Dismiss a whole group of discovered checks
Admin only. Soft-deletes every check in the given group (optionally scoped to one scan).
Download file content
Download file content
Enable the iCal feed for an on-call schedule
Enable the iCal feed for an on-call schedule
Organization activation funnel
Returns one row per organization with the timestamps for each activation milestone (signup, first check, first result, first notification, first incident). Super-admin only.
Get a job's retry chain (admin)
Ordered chain of jobs linked via previousJobUid, earliest ancestor to latest descendant.
Get a background job (admin)
Get a background job (admin)
Get status badge for a check
Returns an SVG badge showing the check's current status. No authentication required.
Get a notification channel
Get a notification channel
Per-period availability statistics for a single check
Returns real, server-measured availability for each requested period (replacing the old client-side estimate). availabilityPct and downtimeSeconds are probe-ratio (the share of probes that succeeded); the incidents block reports confirmed-outage wall-clock time. A period with no data has availabilityPct=null and hasData=false (no data is not 100%).
Get a check group
Get a check group
Get a check-schedule job (admin)
Get a check-schedule job (admin)
Aggregate check counters for an organization
Org-wide check counters computed server-side with a single SQL aggregation, so they are unaffected by the list endpoint's 100-row page clamp. Scope is the same set the list endpoint shows by default: non-deleted, non-internal checks. `total`, `byStatus`, `down` and `hardDown` span enabled and disabled checks alike; `enabled` and `disabled` partition the same set.
Get check details
Get check details
Scheduler cost/delay distribution
Returns an aggregate, low-cardinality distribution of the scheduler's per-job cost_ewma_ms and delay_ewma_ms across all check_jobs, plus fast/slow job counts at a candidate threshold. Read-only and super-admin guarded. Used to decide whether fast/slow scheduling lanes are warranted.
Get current user info
Get current user info
Look up a pending device authorization request by user code
Look up a pending device authorization request by user code
Get a discovery scan with progress
Returns the scan job plus a uniform progress block for every scan type (chunked scans roll up their children; non-chunked scans report totalChunks=1).
Get the email-inbox (JMAP) configuration
Returns the saved JMAP inbox configuration with the password elided. Super-admin only.
Get the email-inbox connection status
Reports whether the email inbox is enabled and connected, the mode, the last sync time, the last error and the address domain. Super-admin only.
Embeddable live status widget script
Self-contained JavaScript (IIFE) that renders a live status pill on a third-party site. It is loaded by an async script tag carrying data-page='org/slug', and configured entirely through data-attributes: data-mode (inline|floating), data-position (bottom-right|bottom-left), data-theme (light|dark|auto), data-size (sm|md|lg), per-state label overrides data-label-operational|degraded|down|maintenance|unknown, and data-force-status (operational|degraded|down|maintenance|unknown) to render a status statically without polling. The widget polls the status page summary endpoint every 60 s with an uncredentialed request and renders into a shadow root; a failed request or an unknown page renders nothing. Everything under /embed/v1/ is a frozen public contract — behavior changes ship under /embed/v2/, but additive, backward-compatible data-attributes may land within v1. Response carries Cache-Control: public, max-age=3600. No authentication required.
Get resolved entitlements for an organization
Get resolved entitlements for an organization
Get an escalation policy
Get an escalation policy
Get file metadata
Get file metadata
System health check
System health check
Get an incident notification delivery by UID
Get an incident notification delivery by UID
Get incident details
Get incident details
Inspect an invitation by token
Inspect an invitation by token
Job & check-schedule stats
Aggregate counts over the background-jobs queue and the check schedule for the org.
Get job details
Get job details
Rate-limit and concurrency introspection
Returns the server's rate-limit and concurrency configuration together with the calling client's live counters (remaining tokens, in-flight requests), the resolved caller IP and which bucket ('ip' or 'token') the caller's traffic is accounted against. Public, no authentication.
Get a maintenance window
Get a maintenance window
Get member details
Get member details
Runtime memory snapshot
Returns a JSON snapshot of runtime memory (heap / stack / goroutines / GC), process RSS, suspect-subsystem cardinalities (DEK cache, rate-limit entries, event listeners) and build facts (cgo, SQLite driver, Go version). Super-admin only; the raw pprof surface stays on the localhost-bound profiler server.
Get a notification delivery by UID
Get a notification delivery by UID
Get an on-call schedule
Get an on-call schedule
Org-wide check dependency graph
Returns every check (node) and every dependency edge in the organization.
Get a single result, with chronological neighbor UIDs
Returns one result row by UID. When the raw row has been rolled up into an aggregation (see retention/aggregation), falls back to the smallest-period aggregation covering the requested UID's embedded UUIDv7 timestamp and includes a `fallback` block describing the substitution. previousUid/nextUid identify the next-older/next-newer row in the same check + periodType series (the covering aggregation's series when a fallback applies), omitted at either boundary. Two rows sharing periodStart are ordered by uid, so stepping across them never skips or repeats.
Get organization settings
Get organization settings
Public browser-safe configuration
Unauthenticated configuration blob the dashboard reads at boot, before
Get a scheduled uptime report
Get a scheduled uptime report
Per-worker check-lane load statistics
Computes, server-side, each worker's offered check load per scheduling lane (fast / slow): eligible job counts, summed cost and delay EWMAs, and the summed duty cycle (100 × cost EWMA / period, i.e. how many runner slots the lane's steady-state demand occupies). 'Offered' means every enabled job the worker is eligible to claim — jobs without a region count for every worker, region-scoped jobs count for workers whose region has the job's region as a prefix — so workers sharing a region report the same load. Super-admin only.
Get a severity
Get a severity
Error-budget burn-down for the current window
Cumulative series. Consumption is accrued per step and summed forward, so `budgetRemainingSeconds` is monotonically non-increasing by construction — it cannot climb back up when probe density changes. It is not clamped at zero: an overspent budget reports a negative remainder. A step with no countable probe spends nothing (no data is not downtime).
Past monthly windows for an objective
Past monthly windows for an objective
Evaluate an objective over the current calendar window
Evaluate an objective over the current calendar window
Get a service-level objective
Get a service-level objective
SVG badge for a status page's overall status
Public SVG badge (shields.io style) reflecting the page-level rollup status — the static, script-free sibling of the JS embed widget, for contexts like GitHub READMEs where scripts can't run. Same visibility gate as the full view and the summary endpoint: a disabled or non-public page returns 404, identical to a page that doesn't exist. Response carries Cache-Control: public, max-age=60. No authentication required.
Get one incident publication with its narrative
Get one incident publication with its narrative
Get a section
Get a section
Get a status page
Get a status page
Get a status update
Get a status update
Get a check-schedule job (all orgs)
Get a check-schedule job (all orgs)
Get a job's retry chain (all orgs)
Get a job's retry chain (all orgs)
Job & check-schedule stats (all orgs)
Aggregate job and check-schedule counts across every org (super-admin).
Get a background job (all orgs)
Get a background job (all orgs)
Get a system parameter
Returns a single system parameter by key. Secret values are masked.
Get system version
Get system version
List background jobs (admin)
Admin-gated list of background jobs for the org, most-recent first.
List all user's tokens across orgs
List all user's tokens across orgs
List configured auth providers
List configured auth providers
List notification channels
List notification channels
List channels bound to a check
List channels bound to a check
List dependencies for a check
Returns the dependsOn (parents) and dependedOnBy (children) edges of the given check.
List events for a check
List events for a check
List check groups
List check groups
List check-schedule jobs (admin)
Admin-gated list of the check_jobs scheduler rows. Encrypted secret values are never returned.
List sample configurations grouped by check type
List sample configurations grouped by check type
List check types with server-level activation status
List check types with server-level activation status
List monitoring checks
List monitoring checks
List discovered (suggested) checks
Returns suggested checks for the org, ordered by group then slug so clients can render them grouped by groupKey.
List discovery scans
List discovery scans
List registered discovery types
Returns the discovery types (lan, freebox, …) available to drive a scan, so a client can build its type picker without hard-coding the set.
List email suppressions
List email suppressions
List entitlement change audits
List entitlement change audits
List escalation policies
List escalation policies
List events
List events
List stored files
List stored files
List events for an incident
List events for an incident
List notification deliveries for an incident
List notification deliveries for an incident
List every status page this incident is published on
List every status page this incident is published on
List incidents
List incidents
List member identity mappings for an integration
Returns every organization member together with their identity on this integration (e.g. their Slack user id on the connected workspace). Identities are used to mention the on-call person in channel alerts; they are never used for paging. Read-only and cheap: this never calls out to the provider. Slack-only — other integration types return 400.
List pending invitations
List pending invitations
List jobs
List jobs
List label key/value suggestions
Returns distinct label keys, or distinct values for a given key when the 'key' query parameter is set, with usage counts for popularity sort.
List the checks covered by a maintenance window
List the checks covered by a maintenance window
List maintenance windows
List maintenance windows
List per-member paging coverage
Per-member notification coverage for the organization. Exposes channel TYPES and verified/enabled flags only — never a contact value, since per-user contacts belong to the member and are otherwise `users/me` scoped. `emailFallbackOnly` marks members nothing but email can reach. Admin only.
List organization members
List organization members
List the caller's own membership requests
List the caller's own membership requests
List the caller's notification routes
List the caller's notification routes
List the caller's notification deliveries
List the caller's notification deliveries
List notification deliveries by connection
Lists notification delivery audit rows for the org, filtered by a connection (channel). `connectionUid` is required.
List overrides on an on-call schedule
List overrides on an on-call schedule
List on-call schedules
List on-call schedules
List an organization's membership requests
List an organization's membership requests
List results across all checks in organization
List results across all checks in organization
List user's tokens for an organization
List user's tokens for an organization
List regions available to an organization
List regions available to an organization
List scheduled uptime reports
List scheduled uptime reports
List severities
List severities
List service-level objectives
List service-level objectives
List the incident publications on a status page
List the incident publications on a status page
List resources of a section
List resources of a section
List sections of a status page
List sections of a status page
List subscribers of a status page
List subscribers of a status page
List status pages
List status pages
List status updates
List status updates
List check-schedule jobs (all orgs)
Super-admin list of the check_jobs scheduler rows across every org. Secrets are never returned.
List background jobs (all orgs)
Super-admin list of background jobs across all orgs, including system jobs (null org).
List all system parameters
Returns all system-wide configuration parameters. Secret values are masked.
List a user's notification deliveries
Admins may query any user; non-admin members may only query themselves (403 otherwise).
Login with email/password
Login with email/password
Logout current session
Logout current session
Partially update an organization's entitlements
Write access is granted to either the billing service or an org admin.
Poll for the device authorization result (RFC 8628 token endpoint)
Poll for the device authorization result (RFC 8628 token endpoint)
Preview the on-call rotation over a window
Preview the on-call rotation over a window
Promote discovered checks into real checks
Admin only. Creates one real check per referenced discovered-check row
Publish this incident on a status page
Publish this incident on a status page
Refresh access token
Refresh access token
Self-service account registration
Self-service account registration
Reject a membership request
Reject a membership request
Unbind a single channel from a check
Unbind a single channel from a check
Remove member from organization
Remove member from organization
Remove one of the caller's notification contacts
Remove one of the caller's notification contacts
Remove a subscriber from a status page
Remove a subscriber from a status page
Reorder the resources of a section
Reorder the resources of a section
Reorder the sections of a status page
Reorder the sections of a status page
Request a password reset email
Request a password reset email
Set a new password using a reset token
Set a new password using a reset token
Resolve an incident
Resolve an incident
Approve or deny a pending device authorization request
Approve or deny a pending device authorization request
Revoke API token
Revoke API token
Rotate a webhook channel's signing secret
Rotates the per-channel signing secret (webhook channels only). The current secret becomes the previous one (valid for a 24 h grace window) and a fresh secret is generated. Returns 400 for non-webhook channels.
Rotate a heartbeat check's ping token
Mints a fresh ping token for a heartbeat check (heartbeat checks only) and persists it, invalidating every previously issued ping URL immediately — unlike webhook signing-secret rotation, there is no grace period, since heartbeat pings are frequent and the operator is expected to update the sender right away. Returns 400 for non-heartbeat checks.
Rotate the iCal feed secret for an on-call schedule
Rotate the iCal feed secret for an on-call schedule
Email a member asking them to set up their paging
Sends a 'set up your alert notifications' email with a link to the member's own notification settings. Carries no contact data and no verification code. Admin only.
Send a test email
Sends a test email to the given recipient using the currently saved SMTP parameters, and reports whether the send succeeded. Super-admin only.
Replace the full set of channels bound to a check
Replace the full set of channels bound to a check
Replace an organization's entitlements
Write access is granted to either the billing service or an org admin.
Set a member's identity on an integration
Records an admin-chosen mapping between an organization member and a workspace user. The external id may be claimed by at most one member per integration. Admin only.
Set the checks covered by a maintenance window
Set the checks covered by a maintenance window
Set a system parameter
Creates or updates a system parameter value.
Snooze an incident
Suppresses notifications until an explicit time (`until`) or for a relative duration (`duration`, e.g. '1h', '30m'). One of the two must be provided.
Start a device authorization request (RFC 8628)
Start a device authorization request (RFC 8628)
Start a discovery scan
Admin only. The generic body is `{type, parameters}`; the discovery-type
Atom feed of a status page's status-update timeline
Public Atom/RSS feed of the page's recent status updates (incident posts and manual updates). Same visibility gate as the full page view. No authentication required.
Switch organization context
Switch organization context
Trigger an email-inbox sync
Runs one immediate sync pass over the configured JMAP inbox. Super-admin only.
Re-run the member identity auto-match
Looks every organization member up in the connected Slack workspace by email (`users.lookupByEmail`) and records the matches. Manual overrides are never overwritten, and a workspace account that two members both resolve to is reported ambiguous and written nowhere. Admin only.
Send a sample notification through a channel
Sends a sample notification through the channel to verify it is wired correctly. Always returns 200 for a notifiable channel; inspect the `success` field to know whether delivery worked. Returns 400 for data-source-only channel types.
Test the email-inbox connection
Connects to the configured JMAP inbox and lists its resolved mailboxes. Super-admin only.
Send a test notification through one of the caller's routes
Send a test notification through one of the caller's routes
Send the report immediately to the caller
Renders the report for the period that most recently closed and mails it to the authenticated caller (or to `recipient`). It never fans out to the schedule's recipient list.
Remove acknowledgement from an incident
Remove acknowledgement from an incident
Unpublish this incident from a status page
Unpublish this incident from a status page
Clear an incident snooze
Clear an incident snooze
Update a notification channel
Update a notification channel
Update a dependency edge
Update a dependency edge
Update a check group
Update a check group
Update monitoring check
Update monitoring check
Update an escalation policy
Update an escalation policy
Update a maintenance window
Update a maintenance window
Update the authenticated user's profile
Update the authenticated user's profile
Update member role
Update member role
Update one of the caller's notification routes
Toggle the enabled flag and/or reorder the full route list.
Update an on-call schedule
Update an on-call schedule
Update the organization profile
Updates the organization's name, URL slug and/or logo. **Owner only** — an admin is refused with 403 FORBIDDEN. Standard PATCH semantics: an omitted field is left untouched, and `logoUrl` accepts `null` (or an empty string) to clear the logo.
Update organization settings
Update organization settings
Update a scheduled uptime report
Update a scheduled uptime report
Update a severity
Update a severity
Update a service-level objective
Update a service-level objective
Edit a publication's title, severity or state
Edit a publication's title, severity or state
Update a resource
Update a resource
Update a section
Update a section
Update a status page
Update a status page
Update a status update
Update a status update
Upload the organization logo
Stores an uploaded image as the organization's logo and points `logoUrl` at its public URL. **Owner only.**
Create or update check by slug (upsert)
Create or update check by slug (upsert)
Validate a check configuration without persisting it
Runs the same validation the create/update paths run, but never writes. Returns whether the payload is valid plus any per-field validation messages.
Send a verification code to a phone contact
Issues a 6-digit code (10-minute expiry, rate-limited to 3/hour per contact) and sends it via the organization's default Twilio connection. Only phone contacts can be verified.
Verify a status page's custom domain
Resolves the domain's CNAME and compares it against the expected target for the configured mode (server.custom_domain_cname_mode: 'shared' uses the installation target, 'token' uses the page-specific '<token>.cname.<target>' host — there is no dual-accept). Stamps the result. Rate-limited per organization.
View an organization's default public status page
Renders the same payload as GET /api/v1/status-pages/{org}/{slug}, resolved to the organization's default page. No authentication required.
Public incident history for a status page
The customer-facing incidents published on this page (spec 2026-08-19-08). Without `active`, returns the page's history window; with `active=true`, only the incidents that are still open — the same set the full page view embeds as `activeIncidents[]`.
Lightweight status summary for a status page
Cheap 'is it up?' companion to the full page view: overall status, per-category counts, page identity, and the canonical public URL — no sections, no per-resource history. Response carries Cache-Control: public, max-age=60. Same visibility gate as the full view: a disabled or non-public page returns 404, identical to a page that doesn't exist. No authentication required.
View a public status page
Full public rendering of a status page: sections, per-resource live status, and (when enabled) availability/response-time history. A disabled or non-public page returns 404, identical to a page that doesn't exist. No authentication required.