---
title: "Complete Status Page Maintenance"
description: "Ends a running maintenance now."
---

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

Ends a running maintenance (`state: in_progress`) now: `scheduledUntil` becomes the current time. Subscribers get `maintenance_completed` (with `notifyOnComplete`) within a minute, as for a planned end.

## 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/complete" \
  -H "Authorization: Bearer $TOKEN"
```

## Response

`200 OK` with the maintenance, now `state: completed`.

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