> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Unschedule Campaign

> Return a scheduled campaign to an editable draft

Unschedule a campaign in `scheduled` status. The pending send is removed, any
weekly or monthly recurrence is stopped, and the campaign returns to `draft` so
you can edit and schedule it again. This is different from
[cancelling a campaign](/api-reference/campaigns/cancel), which is permanent.

## Request

<ParamField path="campaignId" type="string" required>
  Campaign ID.
</ParamField>

This endpoint does not accept a request body.

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/campaigns/camp_abc123/unschedule" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "campaign": {
      "id": "camp_abc123",
      "name": "April Launch",
      "subject": "A quick update",
      "status": "draft",
      "labels": [],
      "scheduledAt": null,
      "sentAt": null,
      "createdAt": "2026-05-20T10:00:00.000Z",
      "url": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123",
      "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Cannot unschedule a campaign in \"draft\" status."
  }
  ```

  ```json 404 theme={null}
  {
    "error": "Campaign not found"
  }
  ```

  ```json 403 theme={null}
  {
    "error": "You have view-only access to this company. Contact the owner to request edit permissions."
  }
  ```

  ```json 409 theme={null}
  {
    "success": false,
    "code": "CAMPAIGN_UNSCHEDULE_CONFLICT",
    "error": "Campaign can no longer be unscheduled",
    "title": "Campaign can no longer be unscheduled",
    "description": "Delivery has already started or the campaign scheduling state changed while the request was processed.",
    "resolution": "Call get_campaign to refresh status. If it is still scheduled, retry unschedule_campaign once. If it is sending, use pause_campaign or cancel_campaign. Do not retry in a loop."
  }
  ```
</ResponseExample>
