Update Status Page Template
Changes fields of a template; null clears an optional field.
PATCH /api/status-pages/templates/{id}
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 |
|---|---|---|---|---|
name | string | No | - | 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 | No | - | 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. |
At least one field. statusPageIds and componentIds are checked together: a field you leave out keeps its stored value.
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 PATCH "$BASE_URL/api/status-pages/templates/4" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "body": "We have identified the cause and are working on a fix.", "updateStatus": "identified" }'Response
200 OK with the changed 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 organization400 Bad Request(invalidIdentifier) when the id is neither a number nor a UUID404 Not Found(statusPageTemplateNotFound) when the template does not exist or belongs to another organization401 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