Services
Manage services displayed on a status page
Organization API key — issue one via the Rails console (management UI coming soon)
Status page subdomain (e.g. acme-status)
OK
Missing or invalid API key
The account is pending activation. A newly created account must be activated by an administrator before its API key can be used.
Resource not found
GET /api/v1/status_pages/{subdomain}/services HTTP/1.1
Host: next.statuspal.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"slug": "api-gateway",
"name": "API Gateway",
"description": null,
"status": "ok",
"order": 1,
"scope": "global",
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
]
}Organization API key — issue one via the Rails console (management UI coming soon)
Status page subdomain (e.g. acme-status)
Optional URL-safe identifier. If omitted, it is auto-generated from name.
If a non-unique value is provided, a numeric suffix is appended (e.g. api-1).
The containers to include this service in, by slug. This is what determines the service scope: listing one or more containers creates a Container Service, while passing an explicit empty array creates a Global Service. Omitting the field defaults to every container on the status page, which keeps existing clients working unchanged. On a page with no containers that default is empty, so the service is Global. An unknown slug returns 422.
["eu","us"]Optional initial status for a Global Service. Defaults to ok.
Ignored for a Container Service; use container_statuses there instead.
Created
Missing or invalid API key
The account is pending activation. A newly created account must be activated by an administrator before its API key can be used.
Resource not found
Validation failed
POST /api/v1/status_pages/{subdomain}/services HTTP/1.1
Host: next.statuspal.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 151
{
"name": "text",
"slug": "text",
"description": null,
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"status": "ok"
}{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"slug": "api-gateway",
"name": "API Gateway",
"description": null,
"status": "ok",
"order": 1,
"scope": "global",
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
}Organization API key — issue one via the Rails console (management UI coming soon)
Status page subdomain (e.g. acme-status)
Service slug (auto-generated from name, e.g. api-gateway)
OK
Missing or invalid API key
The account is pending activation. A newly created account must be activated by an administrator before its API key can be used.
Resource not found
GET /api/v1/status_pages/{subdomain}/services/{service_slug} HTTP/1.1
Host: next.statuspal.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"slug": "api-gateway",
"name": "API Gateway",
"description": null,
"status": "ok",
"order": 1,
"scope": "global",
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
}Organization API key — issue one via the Rails console (management UI coming soon)
Status page subdomain (e.g. acme-status)
Service slug (auto-generated from name, e.g. api-gateway)
Deleted
No content
Missing or invalid API key
The account is pending activation. A newly created account must be activated by an administrator before its API key can be used.
Resource not found
DELETE /api/v1/status_pages/{subdomain}/services/{service_slug} HTTP/1.1
Host: next.statuspal.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Organization API key — issue one via the Rails console (management UI coming soon)
Status page subdomain (e.g. acme-status)
Service slug (auto-generated from name, e.g. api-gateway)
Optional. If provided, replaces the URL slug (with uniqueness suffixing if needed).
Position in the display list (1-indexed). Other services shift accordingly.
Replaces the set of containers this service is included in, by slug, and with it the service scope. Passing an empty array makes the service Global; passing one or more containers makes it a Container Service. An unknown slug returns 422. Status is preserved across a scope change, never reset. Switching Global to Container-scoped gives every newly-included container the service current status. Switching Container-scoped to Global discards the per-container configuration and keeps the worst-case of the discarded statuses — the status the public page was already showing.
["eu","us"]Sets the live status of a Global Service — the API equivalent of the operational dashboard.
Rejected with 422 for a Container Service; use container_statuses there instead.
OK
Missing or invalid API key
The account is pending activation. A newly created account must be activated by an administrator before its API key can be used.
Resource not found
Validation failed
PATCH /api/v1/status_pages/{subdomain}/services/{service_slug} HTTP/1.1
Host: next.statuspal.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 161
{
"name": "text",
"slug": "text",
"description": null,
"order": 1,
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"status": "ok"
}{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"slug": "api-gateway",
"name": "API Gateway",
"description": null,
"status": "ok",
"order": 1,
"scope": "global",
"containers": [
"eu",
"us"
],
"container_statuses": [
{
"container_slug": "eu",
"status": "major"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
}Last updated