---
title: "Post Status Page Maintenance Update"
description: "Publishes an update to a maintenance on the page and to subscribers."
---

`POST /api/status-pages/maintenances/{id}/updates`

Adds a public update to a maintenance, before, during or after it.

## Access

Organization `admin` and `editor`. A customer-scoped user or API token only reaches maintenance whose status pages all belong to a customer in its scope; a page without a customer (`customerId: null`) is for organization-wide roles only. Maintenance of another organization answers `404` (`statusPageMaintenanceNotFound`). 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 |
|-------|------|----------|---------|-------------|
| `body` | string | Yes | - | The update text (1-5000 chars), shown on the public page. |
| `notifySubscribers` | boolean | No | `true` | Send it to subscribers as `maintenance_update`. The same text twice on the same maintenance is sent once. |

## Example (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

curl -X POST "$BASE_URL/api/status-pages/maintenances/12/updates" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"body": "The upgrade takes 20 minutes longer than planned."}'
```

## Response

`201 Created`:

```json
{
  "id": 31,
  "publicId": "7c2d4e6f-8a9b-4c0d-9e1f-2a3b4c5d6e7f",
  "body": "The upgrade takes 20 minutes longer than planned.",
  "createdAt": "2026-11-03T22:40:00.000Z"
}
```

## Common errors

- `400 Bad Request` (`invalidRequestBody`) when a field is missing, has the wrong type or is unknown; `data.issues` names the field
- `400 Bad Request` (`invalidIdentifier`) when an id is neither a number nor a UUID
- `401 Unauthorized` when you are not logged in
- `403 Forbidden` (`forbidden`) when your role may not do this, or for a customer-scoped caller on a page without a customer or of another customer
- `403 Forbidden` (`statusPagesModuleDisabled`) when the status pages module is not activated
- `404 Not Found` (`statusPageMaintenanceNotFound`) when the maintenance does not exist or belongs to another organization
- `409 Conflict` (`statusPageMaintenanceClosed`) when the maintenance was cancelled
