---
title: "Pause a campaign (idempotent; ?dryRun=true)"
method: POST
path: "/campaigns/{campaignId}/pause"
tags: ["Campaigns"]
---

# Pause a campaign (idempotent; ?dryRun=true)

`POST /campaigns/{campaignId}/pause`

Pauses the campaign. Idempotent — pausing an already-paused campaign
is a no-op. `?dryRun=true` returns
`{ dryRun: true, campaignId, wouldPause }` with no writes; a real
pause returns the transition result carrying the `pause` facts.

## Query parameters

- `dryRun` boolean

## Headers

- `Idempotency-Key` string

## Response `200`

The transition result — or the dryRun report.

- union
  - CampaignTransition — Result of a deterministic lifecycle transition (`launch` / `send` / `pause` / `resume`). Carries the transition facts in exactly one of `launch` / `pause` / `resume` depending on which transition ran.
    - `object` 'campaign', required
    - `id` string, uuid, required
    - `status` 'draft' | 'active' | 'paused', required
    - `launched` integer, required — Drafts scheduled by this transition (0 unless launching/resuming).
    - `launch` object — Present on a launch/resume that scheduled work.
      - `scheduled` integer, required
      - `firstScheduledAt` string, date-time, nullable, required
      - `missingRecipientCount` integer, required
      - `duplicateActiveCancelledCount` integer, required
      - `duplicatePriorCancelledCount` integer, required
      - `blocked` object
        - `reason` string, required
        - `message` string, required
        - `missingChannels` string[], required
    - `pause` object — Present on a pause.
      - `stoppedSequences` integer, required
      - `haltedSteps` integer, required
      - `inFlightSending` integer, required
      - `alreadyPaused` boolean, required
    - `resume` object — Present on a resume.
      - `resumedSequences` integer, required
      - `noAccountSequences` integer, required
      - `missingChannels` string[], required
  - object
    - `dryRun` true, required
    - `campaignId` string, uuid, required
    - `wouldPause` boolean, 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)
