Endpoints

Status pages

GET/api/v1/status-pages

List all status pages owned by the current user.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Response Body

application/json

curl -X GET "https://example.com/api/v1/status-pages"
[  {    "id": "string",    "user_id": "string",    "name": "string",    "slug": "string",    "description": "string",    "is_public": true,    "custom_domain": "string",    "branding": {},    "overall_status": "string",    "created_at": "string",    "updated_at": "string",    "components": []  }]
POST/api/v1/status-pages

Create a new status page.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/status-pages" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "slug": "string"  }'
{  "id": "string",  "user_id": "string",  "name": "string",  "slug": "string",  "description": "string",  "is_public": true,  "custom_domain": "string",  "branding": {},  "overall_status": "string",  "created_at": "string",  "updated_at": "string",  "components": []}
GET/api/v1/status-pages/{page_id}

Get a status page by ID.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/status-pages/string"
{  "id": "string",  "user_id": "string",  "name": "string",  "slug": "string",  "description": "string",  "is_public": true,  "custom_domain": "string",  "branding": {},  "overall_status": "string",  "created_at": "string",  "updated_at": "string",  "components": []}
DELETE/api/v1/status-pages/{page_id}

Delete a status page (cascades to components and subscribers).

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id

Response Body

application/json

curl -X DELETE "https://example.com/api/v1/status-pages/string"
Empty
PUT/api/v1/status-pages/{page_id}

Update a status page.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/api/v1/status-pages/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "string",  "user_id": "string",  "name": "string",  "slug": "string",  "description": "string",  "is_public": true,  "custom_domain": "string",  "branding": {},  "overall_status": "string",  "created_at": "string",  "updated_at": "string",  "components": []}
POST/api/v1/status-pages/{page_id}/components

Add a component to a status page.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/status-pages/string/components" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": "string",  "page_id": "string",  "name": "string",  "description": "string",  "monitor_id": "string",  "status": "string",  "sort_order": 0,  "updated_at": "string"}
DELETE/api/v1/status-pages/{page_id}/components/{comp_id}

Remove a component from a status page.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id
comp_id*Comp Id

Response Body

application/json

curl -X DELETE "https://example.com/api/v1/status-pages/string/components/string"
Empty
PUT/api/v1/status-pages/{page_id}/components/{comp_id}

Update a component on a status page.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

page_id*Page Id
comp_id*Comp Id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/api/v1/status-pages/string/components/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "string",  "page_id": "string",  "name": "string",  "description": "string",  "monitor_id": "string",  "status": "string",  "sort_order": 0,  "updated_at": "string"}
GET/api/v1/public/status/{slug}

Public status page endpoint — no authentication required. Returns 404 if the page does not exist or is not public.

Path Parameters

slug*Slug

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/public/status/string"
{  "name": "string",  "slug": "string",  "description": "string",  "branding": {},  "overall_status": "string",  "components": [    {      "name": "string",      "description": "string",      "status": "string",      "updated_at": "string"    }  ]}
GET/api/v1/public/status/{slug}/incidents

Public — list incidents linked to a status page.

Returns non-resolved incidents plus any resolved within the last 7 days. Returns 404 if the page does not exist or is not public.

Path Parameters

slug*Slug

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/public/status/string/incidents"
[  {    "id": "string",    "title": "string",    "status": "string",    "severity": "string",    "created_at": "string",    "resolved_at": "string"  }]
POST/api/v1/public/status/{slug}/subscribe

Subscribe an email address to status page updates.

Returns 409 if the email is already subscribed. Returns 404 if the slug does not exist or the page is not public.

Path Parameters

slug*Slug

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/public/status/string/subscribe" \  -H "Content-Type: application/json" \  -d '{    "email": "user@example.com"  }'
{  "message": "string"}
GET/api/v1/public/status/{slug}/subscribe/confirm

Confirm a status page email subscription via the token sent by email. Returns 404 if the slug or token is invalid / already confirmed.

Path Parameters

slug*Slug

Query Parameters

token*Token

Confirmation token from the email link

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/public/status/string/subscribe/confirm?token=string"
{  "message": "string"}
DELETE/api/v1/public/status/{slug}/unsubscribe

Unsubscribe from a status page using the verification token from the subscription email. Returns 404 if the slug or token is invalid.

Path Parameters

slug*Slug

Query Parameters

token*Token

Verification token from the subscription email

Response Body

application/json

application/json

curl -X DELETE "https://example.com/api/v1/public/status/string/unsubscribe?token=string"
{  "message": "string"}
POST/api/v1/me/status-pages/{status_page_id}/incidents

Link an incident to a status page.

The incident must belong to the same organization. Returns 404 if the status page or incident is not found. Returns 409 if the link already exists.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

status_page_id*Status Page Id

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/me/status-pages/string/incidents" \  -H "Content-Type: application/json" \  -d '{    "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32"  }'
null
DELETE/api/v1/me/status-pages/{status_page_id}/incidents/{incident_id}

Remove an incident link from a status page.

Returns 404 if the link does not exist.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

status_page_id*Status Page Id
incident_id*Incident Id
Formatuuid

Response Body

application/json

curl -X DELETE "https://example.com/api/v1/me/status-pages/string/incidents/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
GET/api/v1/me/status-pages/{status_page_id}/subscribers

List email subscribers for a status page.

Requires admin or above in the organization. Returns paginated subscriber list with id, email, verified flag, and created_at.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

status_page_id*Status Page Id

Query Parameters

limit?Limit
Range1 <= value <= 200
Default50
offset?Offset
Range0 <= value
Default0

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/me/status-pages/string/subscribers"
{  "items": [    {      "id": "string",      "email": "string",      "verified": true,      "created_at": "string"    }  ],  "total": 0,  "limit": 0,  "offset": 0}