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,
"group": "it-services",
"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).
Slug of the service group to put this service in, or null for ungrouped. The group must already exist — create it with POST /service_groups first.
Its scope must match the service's own, which containers determines in this same request: putting a Global Service in a container-scoped group, or the reverse, returns 422. An unknown slug returns 422.
it-servicesThe 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: 173
{
"name": "text",
"slug": "text",
"description": null,
"group": "it-services",
"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,
"group": "it-services",
"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,
"group": "it-services",
"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.
Slug of the service group to move this service into, or null to ungroup it. The group must already exist and its scope must match the service's — otherwise 422.
Changing containers so the service's scope flips removes it from its current group automatically, unless this field names a group of the new scope in the same request.
Moving a group's last service out leaves the group standing, empty. To move a whole group between scopes, write containers on the group rather than on each service.
it-servicesReplaces 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.
A status set this way does not notify subscribers and does not count toward uptime history, which is built from notices. To record an outage, post a notice or notice update with service_statuses 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: 183
{
"name": "text",
"slug": "text",
"description": null,
"order": 1,
"group": "it-services",
"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,
"group": "it-services",
"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