---
title: "Cancel Status Page Maintenance"
description: "Cancels an upcoming maintenance and tells the subscribers."
---

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

Cancels an upcoming maintenance (`state: scheduled`). It leaves the public page; subscribers who got the announcement (`notifyOnSchedule`) receive `maintenance_cancelled`, and the reminder and start messages are not sent. A running maintenance is ended with [Complete Maintenance](/api/status-pages/complete-status-page-maintenance).

## 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.

## Example (cURL)

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

curl -X POST "$BASE_URL/api/status-pages/maintenances/12/cancel" \
  -H "Authorization: Bearer $TOKEN"
```

## Response

`200 OK` with the maintenance, now `state: cancelled` and `cancelledAt` set.

## Common errors

- `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 is not upcoming (running, completed or already cancelled)
