Skip to main content

Status Pages API

Status pages let you communicate service uptime and incident history to your users through a branded, public-facing page. Each status page can display one or more monitors and supports subscriber notifications so your users are alerted when incidents occur.

Status Page Object​

{
"id": "sp_abc123def456",
"orgId": "org_abc123",
"name": "Acme Cloud Status",
"slug": "acme-cloud",
"subdomain": null,
"customDomain": null,
"headerText": "Service Status for Acme Cloud",
"footerText": "Powered by Sentro",
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": false,
"showMonitorType": true,
"uptimeHistoryDays": 90,
"createdAt": "2025-01-15T08:30:00.000Z",
"updatedAt": "2025-01-15T08:30:00.000Z",
"monitors": [
{
"id": "cly1abc2d0001abcdef012345",
"name": "Production API",
"status": "UP",
"sortOrder": 0,
"isVisible": true
}
]
}
FieldTypeDescription
idstringUnique status page identifier
orgIdstringOrganization that owns the status page
namestringDisplay name shown on the status page
slugstringURL-safe identifier (lowercase letters, numbers, hyphens)
subdomainstring|nullCustom subdomain for the status page
customDomainstring|nullCustom domain pointed at the status page
headerTextstring|nullOptional header text displayed at the top
footerTextstring|nullOptional footer text displayed at the bottom
accentColorstringHex color for branding (default #00f0ff)
isPublicbooleanWhether the page is publicly accessible (default true)
visibilitystringPUBLIC, PRIVATE_LINK or PRIVATE (default PUBLIC)
themestringDARK, LIGHT or CUSTOM (default DARK)
bgColorstringPage background, six-digit hex. Only used when theme is CUSTOM
surfaceColorstringCard background, six-digit hex
borderColorstringBorder colour, six-digit hex
textColorstringBody text colour, six-digit hex
mutedTextColorstringLabel and heading colour, six-digit hex
showUptimebooleanWhether to display uptime history and percentages (default true)
showIncidentsbooleanWhether to display the active and past incident lists (default true)
showResponseTimebooleanWhether to display response time graphs (default false)
showMonitorTypebooleanWhether to display each monitor's type, e.g. HTTP (default true)
uptimeHistoryDaysnumberThe furthest back a visitor may look; the page opens on 30 days (default 90)
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 last update timestamp
monitorsarrayAssigned monitors with id, name, status, sortOrder, isVisible
subscribersarraySubscriber list (only included in single status page responses)
note

The subscribers array is only returned when fetching a single status page by ID. It includes each subscriber's id, email, isVerified, and subscribedAt fields.


List Status Pages​

GET /v1/status-pages

Returns all status pages belonging to your organization, including their assigned monitors.

Query Parameters​

ParameterTypeDefaultDescription
limitnumber50Number of status pages to return (max 200)
offsetnumber0Number of status pages to skip for pagination

Example Request​

curl https://api.sentro.dev/v1/status-pages \
-H "Authorization: Bearer sentro_sk_live_your_key_here"

Response 200 OK​

{
"data": [
{
"id": "sp_abc123def456",
"orgId": "org_abc123",
"name": "Acme Cloud Status",
"slug": "acme-cloud",
"subdomain": null,
"customDomain": null,
"headerText": "Service Status for Acme Cloud",
"footerText": null,
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": false,
"showMonitorType": true,
"uptimeHistoryDays": 90,
"createdAt": "2025-01-15T08:30:00.000Z",
"updatedAt": "2025-01-15T08:30:00.000Z",
"monitors": [
{
"id": "cly1abc2d0001abcdef012345",
"name": "Production API",
"status": "UP",
"sortOrder": 0,
"isVisible": true
},
{
"id": "cly2def3e0002ghijkl678901",
"name": "Marketing Site",
"status": "UP",
"sortOrder": 1,
"isVisible": true
}
]
},
{
"id": "sp_ghi789jkl012",
"orgId": "org_abc123",
"name": "Internal Services",
"slug": "internal-services",
"subdomain": null,
"customDomain": null,
"headerText": null,
"footerText": null,
"accentColor": "#00f0ff",
"isPublic": false,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": true,
"showMonitorType": true,
"uptimeHistoryDays": 30,
"createdAt": "2025-01-10T12:00:00.000Z",
"updatedAt": "2025-01-12T14:30:00.000Z",
"monitors": []
}
],
"meta": {
"total": 2
}
}
Try it

Fetch all status pages in your organization.

GET/v1/status-pages?limit=50&offset=0
Query Parameters
Click ⚙ to configure your API key, then hit Send.

Get Status Page​

GET /v1/status-pages/:id

Returns a single status page with its assigned monitors and subscriber list.

Path Parameters​

ParameterTypeDescription
idstringThe status page ID

Example Request​

curl https://api.sentro.dev/v1/status-pages/sp_abc123def456 \
-H "Authorization: Bearer sentro_sk_live_your_key_here"

Response 200 OK​

{
"data": {
"id": "sp_abc123def456",
"orgId": "org_abc123",
"name": "Acme Cloud Status",
"slug": "acme-cloud",
"subdomain": null,
"customDomain": null,
"headerText": "Service Status for Acme Cloud",
"footerText": "Powered by Sentro",
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": false,
"showMonitorType": true,
"uptimeHistoryDays": 90,
"createdAt": "2025-01-15T08:30:00.000Z",
"updatedAt": "2025-01-15T08:30:00.000Z",
"monitors": [
{
"id": "cly1abc2d0001abcdef012345",
"name": "Production API",
"status": "UP",
"sortOrder": 0,
"isVisible": true
},
{
"id": "cly2def3e0002ghijkl678901",
"name": "Marketing Site",
"status": "UP",
"sortOrder": 1,
"isVisible": true
}
],
"subscribers": [
{
"id": "sub_abc123",
"email": "ops@example.com",
"isVerified": true,
"subscribedAt": "2025-01-16T10:00:00.000Z"
},
{
"id": "sub_def456",
"email": "cto@example.com",
"isVerified": false,
"subscribedAt": "2025-01-17T14:30:00.000Z"
}
]
}
}

Error​

{
"error": {
"code": "NOT_FOUND",
"message": "StatusPage with id 'sp_invalid' not found"
}
}
Try it

Get a single status page with monitors and subscribers.

GET/v1/status-pages/:id
Path Parameters
Click ⚙ to configure your API key, then hit Send.

Create Status Page​

POST /v1/status-pages

Creates a new status page. Requires a READ_WRITE API key.

Request Body​

FieldTypeRequiredDescription
namestringYesDisplay name for the status page
slugstringYesURL-safe identifier (lowercase letters, numbers, hyphens)
subdomainstringNoCustom subdomain
customDomainstringNoCustom domain
headerTextstringNoHeader text displayed at the top of the page
footerTextstringNoFooter text displayed at the bottom of the page
accentColorstringNoHex color for branding (default: #00f0ff)
isPublicbooleanNoWhether the page is publicly accessible (default: true)
visibilitystringNoPUBLIC, PRIVATE_LINK or PRIVATE (default: PUBLIC). Takes precedence over isPublic
themestringNoDARK, LIGHT or CUSTOM (default: DARK)
bgColorstringNoPage background as six-digit hex; only applied when theme is CUSTOM
surfaceColorstringNoCard background as six-digit hex
borderColorstringNoBorder colour as six-digit hex
textColorstringNoBody text colour as six-digit hex
mutedTextColorstringNoLabel colour as six-digit hex
showUptimebooleanNoShow uptime history and percentages (default: true)
showIncidentsbooleanNoShow the active and past incident lists (default: true)
showResponseTimebooleanNoShow response time graphs (default: false)
showMonitorTypebooleanNoShow each monitor's type, e.g. HTTP (default: true)
uptimeHistoryDaysnumberNoDays of uptime history to display (default: 90)
monitorIdsstring[]NoMonitor IDs to assign, in the order they appear on the page

Example Request​

{
"name": "Acme Cloud Status",
"slug": "acme-cloud",
"headerText": "Service Status for Acme Cloud",
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"monitorIds": [
"cly1abc2d0001abcdef012345",
"cly2def3e0002ghijkl678901"
]
}

Response 201 Created​

{
"data": {
"id": "sp_new789xyz012",
"orgId": "org_abc123",
"name": "Acme Cloud Status",
"slug": "acme-cloud",
"subdomain": null,
"customDomain": null,
"headerText": "Service Status for Acme Cloud",
"footerText": null,
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": false,
"showMonitorType": true,
"uptimeHistoryDays": 90,
"createdAt": "2025-01-20T10:00:00.000Z",
"updatedAt": "2025-01-20T10:00:00.000Z",
"monitors": [
{
"id": "cly1abc2d0001abcdef012345",
"name": "Production API",
"status": "UP",
"sortOrder": 0,
"isVisible": true
},
{
"id": "cly2def3e0002ghijkl678901",
"name": "Marketing Site",
"status": "UP",
"sortOrder": 1,
"isVisible": true
}
]
}
}

Validation Error​

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid status page data",
"details": {
"name": ["Required"],
"slug": ["Slug must contain only lowercase letters, numbers, and hyphens"]
}
}
}
caution

Creating a status page requires a READ_WRITE API key. Requests made with a READ_ONLY key will receive a 403 Forbidden response.

Try it

Create a new status page for your organization.

POST/v1/status-pages
Request Body
Click ⚙ to configure your API key, then hit Send.

Update Status Page​

PATCH /v1/status-pages/:id

Updates an existing status page. Only the fields you include in the request body will be updated. Requires a READ_WRITE API key.

Path Parameters​

ParameterTypeDescription
idstringThe status page ID

Request Body​

All fields are optional. Include only the fields you want to change.

FieldTypeDescription
namestringUpdated display name
slugstringUpdated URL-safe identifier
subdomainstring|nullUpdated subdomain (null to clear)
customDomainstring|nullUpdated custom domain (null to clear)
headerTextstring|nullUpdated header text (null to clear)
footerTextstring|nullUpdated footer text (null to clear)
accentColorstringUpdated hex color
isPublicbooleanUpdated public visibility
visibilitystringUpdated visibility mode
themestringUpdated appearance
bgColorstringUpdated page background
surfaceColorstringUpdated card background
borderColorstringUpdated border colour
textColorstringUpdated body text colour
mutedTextColorstringUpdated label colour
showUptimebooleanUpdated uptime display setting
showIncidentsbooleanUpdated incident display setting
showResponseTimebooleanUpdated response time display setting
showMonitorTypebooleanUpdated monitor type display setting
uptimeHistoryDaysnumberUpdated uptime history window
monitorIdsstring[]Replace assigned monitors with this list, in order
note

The order of monitorIds is the order the systems appear on the public page. Sending the list is a full replacement: monitors you leave out are removed from the page, and monitors that stay keep their display name and visibility. An ID that does not belong to your organization is rejected rather than silently dropped.

Example Request​

{
"name": "Acme Cloud Status (v2)",
"showResponseTime": true,
"showMonitorType": true,
"uptimeHistoryDays": 30
}

Response 200 OK​

{
"data": {
"id": "sp_abc123def456",
"orgId": "org_abc123",
"name": "Acme Cloud Status (v2)",
"slug": "acme-cloud",
"subdomain": null,
"customDomain": null,
"headerText": "Service Status for Acme Cloud",
"footerText": "Powered by Sentro",
"accentColor": "#00f0ff",
"isPublic": true,
"visibility": "PUBLIC",
"showUptime": true,
"showIncidents": true,
"showResponseTime": true,
"showMonitorType": true,
"uptimeHistoryDays": 30,
"createdAt": "2025-01-15T08:30:00.000Z",
"updatedAt": "2025-01-20T11:00:00.000Z",
"monitors": [
{
"id": "cly1abc2d0001abcdef012345",
"name": "Production API",
"status": "UP",
"sortOrder": 0,
"isVisible": true
}
]
}
}
Try it

Update specific fields on an existing status page.

PATCH/v1/status-pages/:id
Path Parameters
Request Body
Click ⚙ to configure your API key, then hit Send.

Delete Status Page​

DELETE /v1/status-pages/:id

Permanently deletes a status page and removes all monitor assignments and subscriber subscriptions. Requires a READ_WRITE API key.

Path Parameters​

ParameterTypeDescription
idstringThe status page ID

Example Request​

curl -X DELETE https://api.sentro.dev/v1/status-pages/sp_abc123def456 \
-H "Authorization: Bearer sentro_sk_live_your_key_here"

Response 200 OK​

{
"data": {
"id": "sp_abc123def456",
"deleted": true
}
}

Error​

{
"error": {
"code": "NOT_FOUND",
"message": "StatusPage with id 'sp_invalid' not found"
}
}
Try it

Permanently delete a status page.

DELETE/v1/status-pages/:id
Path Parameters
Click ⚙ to configure your API key, then hit Send.

Plan Limits​

The number of status pages you can create depends on your subscription plan.

PlanStatus Pages
Free1
Starter3
Pro10
MaxUnlimited

Attempting to create a status page beyond your plan limit returns a 402 error:

{
"error": {
"code": "PLAN_LIMIT_ERROR",
"message": "Status page limit reached. Upgrade your plan to create more status pages."
}
}