Create Status Page
POST /api/status-pages
Create Status Page
POST /api/status-pages
Creates a new status page. Requires admin role.
Request Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
customerId | number | Yes | — | Customer ID (must belong to your organization) |
name | string | Yes | — | Display name (1–120 chars). Slug auto-generated from name. |
slug | string | No | auto | URL slug (1–120 chars, auto-normalized to lowercase-hyphens) |
description | string | No | null | Description (max 1000 chars) |
visibility | string | No | public | public or customer_members_only |
isPublished | boolean | No | true | Whether the page is publicly visible |
customDomainHostname | string | No | null | Custom domain (3–253 chars). Creates a pending DNS verification record. |
Example (cURL)
curl -X POST "$BASE_URL/api/status-pages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customerId": 5,
"name": "Production Status",
"description": "Real-time status of our production services",
"visibility": "public"
}'
Response
{
"statusPage": {
"id": 1,
"publicId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organizationId": 1,
"customerId": 5,
"name": "Production Status",
"slug": "production-status",
"description": "Real-time status of our production services",
"visibility": "public",
"isPublished": true,
"showRecentIncidents": false,
"showRecentMaintenance": false,
"customDomainId": null,
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:00:00.000Z"
},
"dns": null
}
If customDomainHostname is provided, the response includes DNS verification instructions:
{
"dns": {
"txtName": "_uptimeify-verify.status.example.com",
"txtValue": "abc123-def456-ghi789"
}
}
Common errors
401 Unauthorizedwhen not authenticated403 Forbiddenwhen not an admin409 Conflictwhen slug is already taken