API Examples
These are intentionally minimal, copy-pasteable examples for the main path.
If you want the fuller automation pattern with external_id, retries, and follow-up actions, read API Quickstart.
If you want every available field, open the API Reference.
Set a page-host base URL first:
export STATIBEAT_BASE_URL="https://status.example.com"
When a URL includes query parameters, keep it quoted exactly as shown so it pastes cleanly into shells like zsh.
Read the current automation context
curl "$STATIBEAT_BASE_URL/api/v1/context" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Read public incident history
curl "$STATIBEAT_BASE_URL/api/v1/incidents"
Incident list endpoints return a compact summary by default. Add ?view=full if you want the full nested incident document.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/incidents?view=full"
List incidents in page admin
curl "$STATIBEAT_BASE_URL/api/v1/admin/incidents" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Admin list endpoints also default to a compact summary. Add ?view=full when you want the full incident payload used by the admin UI.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/admin/incidents?view=full" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Create an API token
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/api-tokens" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "incident-bot",
"permission": "write",
"role_key": "page_manager"
}'
For Terraform-specific token settings, see Terraform Workspace and Export.
Create an incident
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/incidents" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Elevated API latency",
"description": "We are investigating elevated latency.",
"status": "degraded",
"affected_items_freetext": "Public API"
}'
external_id is optional. Add it when you want retry-safe automation and stable follow-up routes. See API Quickstart.
Resolve an incident by external ID
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/incidents/external/incident-api-latency-2026-03-22/resolve" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"resolution_message": "Latency has returned to normal levels."
}'
This is the automation-friendly follow-up path. For the matching create flow, see API Quickstart.
Schedule a maintenance window
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/maintenances" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "API maintenance",
"status": "scheduled",
"affected_items": [{ "slug": "public-api" }],
"scheduled_start_time": "2026-03-25T21:00:00Z",
"scheduled_end_time": "2026-03-25T21:45:00Z"
}'
Maintenance needs at least one affected item. For lifecycle stages, auto-transition, and richer scheduling options, see the API Reference.
Read public maintenance windows
curl "$STATIBEAT_BASE_URL/api/v1/maintenances"
Maintenance list endpoints also return a compact summary by default. Add ?view=full if you want the full maintenance document.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/maintenances?view=full"
List maintenance windows in page admin
curl "$STATIBEAT_BASE_URL/api/v1/admin/maintenances" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Admin maintenance lists also default to a compact summary. Add ?view=full when you want the full maintenance payload used by the admin UI.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/admin/maintenances?view=full" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Post a maintenance update
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/maintenances/external/maintenance-elastic-eu-west-2-2026-03-25/updates" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"message": "Maintenance is in progress. Engineers are validating cluster health.",
"status": "in_progress"
}'
List beats in page admin
curl "$STATIBEAT_BASE_URL/api/v1/admin/beats" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Beat lists default to a compact summary. Add ?view=full when you want the full Beat configuration document used by the admin UI.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/admin/beats?view=full" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
List RSS feeds in page admin
curl "$STATIBEAT_BASE_URL/api/v1/admin/feeds" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Feed lists default to a compact summary. Add ?view=full when you want component filters, lifecycle filters, and manager details.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/admin/feeds?view=full" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
List subscribers in page admin
curl "$STATIBEAT_BASE_URL/api/v1/admin/subscribers" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Subscriber lists default to a compact summary. Add ?view=full when you want the full subscriber profile document.
Example:
curl "$STATIBEAT_BASE_URL/api/v1/admin/subscribers?view=full" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Create a beat
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/beats" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Checkout API health",
"type": "api",
"target": {
"url": "https://api.example.com/health"
},
"component_refs": [{ "slug": "public-api" }],
"threshold_policies": {
"critical_rule": {
"consecutive_failures": 3
}
}
}'
Beats need a target and at least one threshold rule. Mapped components are optional for internal-only beats; customer-facing beat actions need component_refs or component_ids, affected_items_freetext, or both. Public metrics still require a mapped component. For screenshots, actions, email routing, and incident drafting, see Beats or the API Reference.
Trigger a beat run now by external ID
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/beats/external/beat-checkout-api-health/run" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
For a stable follow-up path like this, create the Beat with an external_id. See API Quickstart.
List pages for the current org
curl "$STATIBEAT_BASE_URL/api/v1/org/pages" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"
Generate a Terraform export bundle
curl -X POST "$STATIBEAT_BASE_URL/api/v1/admin/terraform-export" \
-H "Authorization: Bearer $STATIBEAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"feature_groups": ["hierarchy", "settings"]
}'
The export response includes download_url and manifest_url. For import blocks, lock plans, and provider version settings, see Terraform Workspace and Export.
Notes
- Public page reads such as
/api/v1/settings,/api/v1/incidents, and/api/v1/maintenancesdo not need an API token. - Use bearer tokens for automation and admin workflows.
- Use your page or custom domain as the API base URL.
- Start with
/api/v1/contextwhen you want to confirm which page and org the current host resolved to. - Prefer
external_idandslugreferences over internal numeric IDs in automation payloads. - Prefer
/api/v1/admin/...and/api/v1/org/...for customer automation.