Status Pages API

Status pages publish the live health of selected monitors at a public (or private) URL. This page documents the public status endpoint that any client can read without authentication, plus the User API endpoints for listing and reading your status pages.

There are three distinct surfaces, and they do not share the same host or auth:

Surface Endpoint Auth Host
Public status data GET /api/status/{slug} None api.statusradar.dev
User API (read) GET /v1/status-pages, GET /v1/status-pages/{id} Authorization: Bearer <token> api.statusradar.dev
Human-facing page GET /status/{slug} None (public pages) statusradar.dev

Status pages themselves are created and edited from the dashboard, not the API β€” the User API exposes them read-only. See Managing status pages.

Public Status Endpoint

GET /api/status/{slug}

Returns the published state of a status page identified by its slug. No authentication. Only pages with is_public = true are served; a private or unknown slug returns 404.

curl https://api.statusradar.dev/v1/status/my-status-page

Path parameters

Parameter Type Description
slug string The page's unique URL slug (lowercase, a-z0-9-_).

Response fields

The payload describes the page and the monitors assigned to it.

Field Type Description
slug string Unique URL slug for the page.
title string Display title.
description string | null Optional description shown under the title.
is_public boolean Whether the page is publicly readable. The endpoint only ever returns true here.
language string Display language, ISO 639-1 (e.g. en, ru, es).
show_history_days integer Length of the uptime history window in days. One of 30, 60, 90, 180, 365.
theme object Theme settings (see below).
overall_status string Roll-up across all monitors: operational or partial.
monitors array Monitors assigned to the page, grouped by their group_name.
incidents array Up to the 10 most recent incidents affecting page monitors.
uptime_history array Daily uptime points for the last show_history_days days.

theme object

Field Type Description
primary_color string Hex accent color, e.g. #10b981.
layout string Layout/theme name, e.g. modern-light.

monitors[] object

Each monitor entry combines the monitor definition with its per-page display settings and live status.

Field Type Description
id integer Monitor ID.
name string Monitor name.
display_name string | null Optional override shown on this page instead of name.
group_name string Group the monitor is displayed under (defaults to General).
current_status string operational, down, or unknown.
response_time_ms number | null Latest response time in milliseconds.
last_check string | null Timestamp of the last check.
show_uptime boolean Whether the uptime bar is shown for this monitor.
show_response_time boolean Whether the response-time figure is shown.

uptime_history[] object

Field Type Description
date string Calendar day, YYYY-MM-DD.
uptime number | null Uptime percentage for that day, or null when no data exists.
hasData boolean Whether metrics were recorded for that day.

Example response

{
  "slug": "my-status-page",
  "title": "Acme Status",
  "description": "Live status of the Acme platform.",
  "is_public": true,
  "language": "en",
  "show_history_days": 90,
  "theme": {
    "primary_color": "#10b981",
    "layout": "modern-light"
  },
  "overall_status": "operational",
  "monitors": [
    {
      "id": 42,
      "name": "API",
      "display_name": "Public API",
      "group_name": "Core",
      "current_status": "operational",
      "response_time_ms": 128,
      "last_check": "2026-06-23T09:14:02Z",
      "show_uptime": true,
      "show_response_time": true
    },
    {
      "id": 43,
      "name": "Website",
      "display_name": null,
      "group_name": "Core",
      "current_status": "down",
      "response_time_ms": null,
      "last_check": "2026-06-23T09:13:55Z",
      "show_uptime": true,
      "show_response_time": false
    }
  ],
  "incidents": [
    {
      "id": 9,
      "monitor_name": "Website",
      "title": "Elevated error rate",
      "status": "investigating",
      "severity": "major",
      "started_at": "2026-06-23T09:00:00Z"
    }
  ],
  "uptime_history": [
    { "date": "2026-06-22", "uptime": 100, "hasData": true },
    { "date": "2026-06-23", "uptime": 99.86, "hasData": true }
  ]
}

When any assigned monitor is down, overall_status becomes partial and that monitor's group is also reported as partial. Only active monitors (is_active = true) appear in the payload.

Errors

Status Meaning
404 No public status page exists for that slug (unknown slug or the page is private).

User API β€” Status Pages

These endpoints require a user API token. Generate one at Dashboard β†’ Settings β†’ API (/dashboard/settings/api) and send it as a Bearer token. Results are scoped to the status pages your account and team own. The User API is read-only for status pages; create and edit them from the dashboard.

Authorization: Bearer YOUR_API_TOKEN

List status pages

GET /v1/status-pages
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.statusradar.dev/v1/status-pages

Returns the status pages owned by your team, including both public and private pages, each with its slug, title, is_public, show_history_days, language, theme, and the count of assigned monitors.

Get a status page

GET /v1/status-pages/{id}
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.statusradar.dev/v1/status-pages/12

Returns a single status page by numeric id with its full configuration and assigned monitors. Returns 404 if the page does not exist or is not owned by your team.

Parameter Type Description
id integer Numeric status page ID (not the slug).

Status Page Fields

These fields define a status page. They are set in the dashboard and surfaced by the endpoints above.

Field Type Default Description
slug string β€” Unique URL slug, 3–100 chars, a-z0-9-_ (lowercased on save). Drives /status/{slug} and /api/status/{slug}.
title string β€” Display title, 3–255 chars.
description string | null null Optional description, up to 1000 chars.
is_public boolean true Public pages are served by the public endpoint and at /status/{slug}; private pages are not.
language string en Display language (ISO 639-1). Sets the locale of the rendered page.
show_history_days integer 90 Uptime history window. Allowed values: 30, 60, 90, 180, 365. Any other value falls back to 90.
theme.primary_color string #10b981 Accent color (hex).
theme.layout string modern-light Layout/theme name.
monitors array [] Monitors assigned to the page. Each assignment can override the display name and toggle the uptime / response-time widgets.

Per-monitor display settings

When you assign a monitor to a page, these per-assignment settings control how it appears:

Setting Type Default Description
display_name string | null null Override shown instead of the monitor's name.
group_name string General Section heading the monitor is grouped under.
order_index integer 0 Sort order within the group.
show_uptime boolean true Show the uptime history bar.
show_response_time boolean true Show the latest response time.

Managing Status Pages (Dashboard)

Create and configure status pages from the dashboard β€” these actions are not exposed on the public/User API:

  • Create β€” Dashboard β†’ Status Pages β†’ Create (/dashboard/status-pages/create). Set title, slug, description, visibility, language, history window, and theme.
  • Edit β€” /dashboard/status-pages/{slug}/edit.
  • Assign monitors β€” /dashboard/status-pages/{slug}/manage-monitors. Pick monitors and set per-monitor display options.
  • Delete β€” removes the page and its monitor assignments.

Status page creation is subject to your plan's status-page quota; reaching the limit prompts an upgrade. See Status Pages.

Public Page URL

Every public status page is also viewable as an HTML page at:

https://statusradar.dev/status/{slug}

This is the human-facing version of the same data returned by GET /api/status/{slug} β€” share it with your users. Private pages return 404 at this URL.

Next Steps

  • API Overview β€” the full API surface and base URLs
  • API Authentication β€” token types and how to send them
  • Status Pages β€” building and customizing status pages
  • Monitors β€” create the monitors you assign to a page
  • Alerts β€” alerting that surfaces as incidents on a page