---
title: "Cancel campaign"
method: POST
path: "/campaigns/{id}/cancel"
tags: ["Campaigns"]
---

# Cancel campaign

`POST /campaigns/{id}/cancel`

## Request

- Base URL: `https://api.omnisend.com/api`
- URL: `https://api.omnisend.com/api/campaigns/{id}/cancel`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `https://app.omnisend.com/oauth2/token` scopes: `campaigns.write`
  - API key in header `Authorization`

Cancel a campaign and mark it as canceled.

**Cancelable source states:** `scheduled` or `paused` (all channel types), or `started` (email only). Any other status (e.g. `draft`, `sent`, `canceled`) returns 409.

Supported cases:
- Any scheduled or paused campaign (all channel types)
- Started email campaigns

**Note:** For started campaigns, cancellation is best-effort — messages already in flight may still be delivered.

**Scopes:**
`campaigns.write`

**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.

## Path parameters

- `id` string, required

## Headers

- `Omnisend-Version` string, required

## Response `204`

Campaign cancel initiated successfully

## Other responses

- `400`: Request contains invalid or missing fields
- `401`: Authentication is missing or invalid
- `403`: Insufficient permissions for this operation
- `404`: Campaign not found
- `409`: Campaign is not in a cancelable state (only scheduled, or started/paused email campaigns can be canceled)
- `410`: API version has been retired
- `422`: Campaign type is not supported
- `429`: Rate limit exceeded
- `500`: Unexpected error occurred

---

[API](https://skmtc.dev/omnisend/apis/campaigns-api.md) - [All operations](https://skmtc.dev/omnisend/apis/campaigns-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omnisend/apis/campaigns-api/revisions/fef4d9467305?raw)
