Uptimeify Docs
Monitoring

Save Postmortem

Saves the public postmortem (Markdown) of an incident as a draft, or replaces the text of a published one.

PUT /api/incidents/:id/postmortem

Saves the public postmortem of an incident: what happened, why, and what was changed, written in Markdown. Like on Atlassian Statuspage, the postmortem is shown under the incident on every status page the incident appears on, once it is published with Publish Postmortem. Until then it is a draft, visible only in the status pages module.

An incident has at most one postmortem; this call creates it or replaces its text. On a published postmortem the new text goes live immediately and it stays published. Saving sends no notification. The text can be saved at any time, publishing needs a resolved incident.

The status pages render the Markdown themselves and never as raw HTML: headings, paragraphs, lists, bold, italic, code and links to http(s) addresses. Anything else, including HTML tags, is shown as plain text.

Authentication

Requires role admin or editor within the incident's customer scope. An incident without a customer needs an organization-wide role or token; for any other organization it answers 404 incidentNotFound. readonly gets 403 forbidden.

  • Header: Authorization: Bearer <token>

Path Parameters

  • id (required): numeric id or publicId (UUID) of the incident.

Request Body

FieldTypeRequiredDescription
bodystringyesMarkdown, 1 to 50,000 characters after trimming.

Unknown fields are rejected with 400 invalidRequestBody.

Example (cURL)

curl -X PUT "$BASE_URL/api/incidents/5121/postmortem" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "body": "## Cause\nA database node ran out of disk space.\n\n## Actions\n- Alert at 80 % disk usage" }'

Response

200 OK

{
  "incidentId": 5121,
  "incidentPublicId": "8a3c1f6e-2b7d-4e59-9c1a-5d2e7f0b4c33",
  "body": "## Cause\nA database node ran out of disk space.\n\n## Actions\n- Alert at 80 % disk usage",
  "publishedAt": null,
  "updatedAt": "2026-10-28T14:02:11.000Z"
}
FieldDescription
publishedAtnull = draft; otherwise when it was published (ISO 8601).
updatedAtWhen the text was last saved.

Get Incident Details returns the same fields as postmortem.

Common Errors

  • 400 Bad Request (invalidRequestBody) when body is missing, empty, longer than 50,000 characters, or an unknown field is sent
  • 400 Bad Request (incidentNoCustomer) when the incident has neither a customer nor a status page
  • 401 Unauthorized when not authenticated
  • 403 Forbidden (forbidden) when your role or customer scope does not allow it
  • 404 Not Found (incidentNotFound) when the incident does not exist in your organization

On this page