---
title: "Cancel a calendar event (soft-delete; row persists for DSAR)"
method: DELETE
path: "/api/calendar-events/{event_id}"
tags: ["Calendar"]
---

# Cancel a calendar event (soft-delete; row persists for DSAR)

`DELETE /api/calendar-events/{event_id}`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/calendar-events/{event_id}`
- Auth: none declared

Soft-cancel (status='cancelled'). Owner-scoped — a user cannot
cancel another user's event by guessing IDs. The row survives for
DSAR export + undo; the 30-day GDPR cron + FK CASCADE hard-delete it.

## Path parameters

- `event_id` integer, required: The event id to cancel.

## Response `200`

Successful Response

- CalendarEventDeleteResponse: `DELETE /api/calendar-events/{id}` response. `data.ok` decides remove-row vs error-toast; `data.id` echoes the cancelled event id.
  - `ok` boolean, required: True on successful soft-cancel; false on not-found.
  - `id` integer, required: Echo of the path parameter for row matching.

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Validation Error
- `500`: Internal Server Error

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
