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:
| Parameter | Values | Default |
|---|---|---|
period | 7d, 30d, 90d, 365d | 30d |
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.1hmetrics.24hmetrics.7dmetrics.30d
Each window includes:
avg_msuptime_percentageuptime_trendresponse_time_trendapdex/apdex_change(legacy compatibility aliases)response_time_changestate,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:
| Parameter | Values | Default |
|---|---|---|
ids | comma-separated monitor IDs | required |
range | 1h, 24h, 7d, 30d | 24h |
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.