StatusPage.me Help Center

Popular topics: creating a status page, connecting monitors, automatic incidents, custom domains, integrations and billing.

StatusPage.me Mar 14, 2026 API

Monitors API

Read monitors and availability metrics with monitors:read; create, update, and delete monitors with monitors:write (or use a full-access key).


List all monitors

GET /user/api/v1/monitors

Required scope: monitors:read

Example:

curl -H "Authorization: Bearer spk_..." \
  https://statuspage.me/user/api/v1/monitors

Response:

{
  "data": [
    {
      "id": 42,
      "name": "API endpoint",
      "type": "site",
      "target": "https://api.example.com/health",
      "interval_seconds": 60,
      "enabled": true,
      "status_page_id": "550e8400-e29b-41d4-a716-446655440000",
      "status_page_slug": "my-company",
      "created_at": "2025-11-01T10:00:00Z",
      "updated_at": "2026-03-01T08:30:00Z"
    }
  ]
}

Get a single monitor

GET /user/api/v1/monitors/:id

Required scope: monitors:read


Get monitor availability metrics

GET /user/api/v1/monitors/:id/availability?period=30d

Required scope: analytics:read

Query parameters:

ParameterValuesDefault
period7d, 30d, 90d, 365d30d

Example:

curl -H "Authorization: Bearer spk_..." \
  "https://statuspage.me/user/api/v1/monitors/42/availability?period=30d"

Response includes uptime percentage, MTTR (mean time to recovery), MTBF (mean time between failures), and downtime data for the requested period.


Create a monitor

POST /user/api/v1/monitors

Required scope: monitors:write

Only site, api, and dns monitors are supported. status_page_id is required; component_id is optional but, when supplied, must belong to that page.

{
  "name": "API health",
  "type": "api",
  "target": "https://api.example.com/health",
  "expected": "200",
  "status_page_id": "550e8400-e29b-41d4-a716-446655440000",
  "interval_seconds": 60,
  "enabled": true,
  "api_method": "GET",
  "api_headers": {"Accept": "application/json"}
}

For API monitors, use api_method, optional authentication fields (api_auth_type, api_basic_username, api_basic_password, api_key_header, api_key_value, or api_bearer_token), api_query, api_headers, and api_body. For DNS monitors, use dns_record_type (A, AAAA, CNAME, MX, NS, TXT, SRV, or CAA) and dns_expected_value.

If omitted, type defaults to site, interval_seconds defaults to 60 seconds, and enabled defaults to true. Requested intervals are constrained by account-plan limits. If the page has reached its enabled-monitor limit, the monitor is created disabled rather than rejected.

The response is 201 Created with the monitor. Send an Idempotency-Key header to make a create safe to retry; see Authenticated REST API Overview.


Update a monitor

PATCH /user/api/v1/monitors/:id

Required scope: monitors:write

You can update the monitor’s name, target, expected value, interval, enabled state, overall-status exclusion, and the API or DNS settings listed above. You cannot change its type or move it to another status page or component through this endpoint.

{
  "enabled": false,
  "interval_seconds": 300,
  "exclude_from_overall": true
}

Delete a monitor

DELETE /user/api/v1/monitors/:id

Required scope: monitors:write

On success, the API returns { "success": true }.


Legacy Dashboard Monitor Endpoints

In addition to the scoped /user/api/v1/* API, monitor-related dashboard endpoints under /user/api/ are API-key authenticatable and useful for list-page hydration.

These endpoints are not RequireAPIScope(...)-gated like /user/api/v1/*, so keys with API access can call them unless specifically blocked by auth rules.

List monitors by components (with inline metrics)

GET /user/api/monitors?component_ids=cmp_1,cmp_2

Required query parameter:

  • component_ids (comma-separated component IDs)

Response includes the original monitor identity fields and inline windowed metrics:

  • metrics.1h
  • metrics.24h
  • metrics.7d
  • metrics.30d

Each window includes:

  • avg_ms
  • uptime_percentage
  • uptime_trend
  • response_time_trend
  • apdex / apdex_change (legacy compatibility aliases)
  • response_time_change
  • state, updated, latency, region_states

Example:

curl -H "Authorization: Bearer spk_..." \
  "https://statuspage.me/user/api/monitors?component_ids=cmp_1,cmp_2"

Batched metrics for monitor IDs

GET /user/api/monitors/metrics?ids=42,84&range=30d

Query parameters:

ParameterValuesDefault
idscomma-separated monitor IDsrequired
range1h, 24h, 7d, 30d24h

Common validation errors:

  • { "error": "ids required" }
  • { "error": "no valid ids" }
  • { "error": "too many ids" }
  • { "error": "unsupported range" }

Notes

  • Monitors belonging to status pages accessible via team membership are included.
  • Disabled monitors are excluded from the list.

Was this article helpful?