Skip to main content

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/maintenances do 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/context when you want to confirm which page and org the current host resolved to.
  • Prefer external_id and slug references over internal numeric IDs in automation payloads.
  • Prefer /api/v1/admin/... and /api/v1/org/... for customer automation.