Create Status Page Template
Creates an incident or update template.
POST /api/status-pages/templates
A template pre-fills the form for a new public incident (kind: incident) or for an update on a running one (kind: update). It publishes nothing by itself; incidents are still created with Create Manual Incident.
Access
Organization admin and editor with an unrestricted scope: a customer-scoped user or API token gets 403 (customerScopedTokenForbidden), because a template belongs to the whole organization. A template of another organization answers 404 (statusPageTemplateNotFound). Path ids take the numeric id or the publicId. The change is written to the organization's audit log.
Request Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
kind | string | Yes | - | incident (a new incident) or update (an update on a running one). Cannot be changed later. |
name | string | Yes | - | Shown in the template picker, 1-120 characters. |
title | string or null | No | null | Incident templates only: the incident title, up to 200 characters. |
body | string | Yes | - | The update text, 1-5,000 characters. |
updateStatus | string | No | investigating | Phase the update starts with: investigating, identified, monitoring or resolved. |
severity | string or null | No | null | Incident templates only: minor, major, critical or maintenance. |
impact | string or null | No | null | Incident templates only: degraded, partial_outage, major_outage or maintenance. |
statusPageIds | array or null | No | null | Incident templates only: status pages (id or publicId) preselected in the form, at most 10. Each must belong to your organization. |
componentIds | array or null | No | null | Incident templates only: components (id or publicId), at most 100; each must belong to one of statusPageIds. |
An update template (kind: update) takes only name, body and updateStatus; the incident-only fields stay null.
Example (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
curl -X POST "$BASE_URL/api/status-pages/templates" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "kind": "incident", "name": "Payment provider down", "title": "Card payments failing", "body": "We are looking into failed card payments.", "severity": "major", "statusPageIds": [2], "componentIds": [8] }'Response
201 Created with the new template:
{
"id": 4,
"publicId": "3f6c2a1b-8d4e-4b7a-9c1d-2e3f4a5b6c7d",
"kind": "incident",
"name": "Payment provider down",
"title": "Card payments failing",
"body": "We are looking into failed card payments.",
"updateStatus": "investigating",
"severity": "major",
"impact": "partial_outage",
"statusPageIds": [2],
"componentIds": [8],
"createdAt": "2026-10-27T09:00:00.000Z",
"updatedAt": "2026-10-27T09:00:00.000Z"
}Common errors
400 Bad Request(invalidRequestBody) when a field is invalid, or an update template gets an incident-only field400 Bad Request(statusPageIdsRequired) whencomponentIdsis sent withoutstatusPageIds400 Bad Request(statusPageComponentNotOnPage) when a component belongs to a page that is not instatusPageIds404 Not Found(statusPageNotFound,statusPageComponentNotFound) when a page or component does not exist in your organization409 Conflict(statusPageLimitReached, withdata.max) when the organization already has 200 templates401 Unauthorizedwhen you are not logged in403 Forbidden(statusPagesModuleDisabled) when the status pages module is not activated403 Forbidden(forbidden) when your role may not write403 Forbidden(customerScopedTokenForbidden) for a customer-scoped user or token