---
title: "Cancel a scheduled CRM email campaign"
method: POST
path: "/api/campaigns/{campaign_id}/cancel"
tags: ["crm-email"]
---

# Cancel a scheduled CRM email campaign

`POST /api/campaigns/{campaign_id}/cancel`

Admin-only endpoint. Cancels a still-scheduled campaign; rejects ones already running/sent.

## Path parameters

- `campaign_id` string, uuid, required — Campaign UUID

## Response `200`

Successful Response

- CRMEmailCampaignListItem — A campaign row for the CRM management list.
  - `id` string, required — Campaign UUID.
  - `status` string, required — scheduled | running | sent | failed | cancelled.
  - `scheduled_at` string, date-time, nullable — When the campaign is/was scheduled to send.
  - `subject` string, required — Email subject.
  - `notes` string, nullable — Internal note on why the campaign was sent; CRM-only.
  - `audience_type` string, required — 'filters' or 'csv'.
  - `audience_size` integer, nullable — Recipient count for a csv audience; null for a filter audience.
  - `resolved_count` integer, nullable — Recipients resolved at send time (once sent).
  - `sent_count` integer, nullable — Messages enqueued (once sent).
  - `send_offset` integer, nullable — Recipients dispatched so far across all completed waves (throttled sends).
  - `last_wave_at` string, date-time, nullable — When the most recent send wave (batch) ran; null before the first wave.
  - `next_wave_at` string, date-time, nullable — When the next throttled wave (batch) is due to run; null when idle/finished.
  - `error` string, nullable — Failure reason, if the send failed.
  - `created_at` string, date-time, required — When the campaign was created.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/corabea/apis/corabea-api.md) · [All operations](https://skmtc.dev/corabea/apis/corabea-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/corabea/corabea-api/revisions/13c1bce1bdc4/schema)
