---
title: "Delete a system announcement (admin only)"
method: DELETE
path: "/api/v1/announcements/{announcementID}"
tags: ["Announcements"]
---

# Delete a system announcement (admin only)

`DELETE /api/v1/announcements/{announcementID}`

## Request

- Base URL: `https://api.uptimemonitoring.com`
- URL: `https://api.uptimemonitoring.com/api/v1/announcements/{announcementID}`
- Auth: HTTP bearer

Admin-gated. Hard-deletes the row. Returns 204 on success and
404 when the id does not exist (a second DELETE against the
same id therefore returns 404, mirroring the rest of the
API).

## Path parameters

- `announcementID` integer, required

## Response `204`

Announcement deleted.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: Authenticated but the caller is not permitted on this route. Body is the opaque `{"error":"forbidden"}` envelope used for every admin-gated 403 across the API; the same shape is used whether the caller is missing the admin role or the route otherwise denies them, so clients cannot distinguish the two.
- `404`: No announcement exists with the given ID.
- `429`: Per-account dispatcher rate limit exceeded (200 requests/minute). The `Retry-After` header gives the integer seconds until at least one token has refilled. The `X-RateLimit-*` trio reflects the bucket whose rejection produced this response — usually the global 200/min cap; on `POST /api/v1/monitors` a 429 may instead reflect the per-route 20/min creation limit.

---

[API](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api.md) · [All operations](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/revisions/ddcb2a8bc70f?raw)
