---
title: "Delete a campaign (?confirm=true, ?dryRun=true)"
method: DELETE
path: "/campaigns/{campaignId}"
tags: ["Campaigns"]
---

# Delete a campaign (?confirm=true, ?dryRun=true)

`DELETE /campaigns/{campaignId}`

Soft-deletes the campaign (instantly halting its picker) and
cancels its orphaned sequences. Follows the v2 deletes convention:

- Without `?confirm=true` (or with `?dryRun=true`) → HTTP 200 with
  the impact preview
  `{ id, name, confirmationRequired: true, status }`; nothing removed.
- With `?confirm=true` → deletes and returns
  `{ id, name, deleted: true }`.

## Query parameters

- `confirm` boolean
- `dryRun` boolean

## Response `200`

The impact preview (unconfirmed / dryRun) or the delete receipt (confirmed).

- union
  - CampaignDeletePreview — Impact preview returned by `DELETE /campaigns/{campaignId}` when `?confirm=true` is absent (or `?dryRun=true` is set). Nothing has been removed.
    - `id` string, uuid, required
    - `name` string, required
    - `confirmationRequired` true, required
    - `status` 'draft' | 'active' | 'paused', required
  - object
    - `id` string, uuid, required
    - `name` string, required
    - `deleted` true, required

## Other responses

- `404` — CAMPAIGN_NOT_FOUND.

---

[API](https://skmtc.net/origami/apis/origami-agent-api.md) · [All operations](https://skmtc.net/origami/apis/origami-agent-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/origami/origami-agent-api/revisions/8083ad7fe081/schema)
