Pause a campaign

View as Markdown
Moves an `active` campaign to `paused`. No request body. From then on no new call starts and no new WhatsApp or email message goes out: queued jobs find the campaign is not active and are dropped, and the contacts they belonged to stay `pending`. Calls already in progress are **not** hung up, and scheduled redials are not placed while the campaign is paused. Resume with `PATCH /api/campaigns/{campaignId}/activate`, which queues the remaining `pending` contacts again. A paused campaign does not use an active-campaign slot of the plan and never auto-completes. **Side effects.** Updates the status, clears the campaign caches, sends an in-app notification and writes an audit entry. **Idempotency.** Not idempotent: pausing a campaign that is not `active` (including one already paused) answers 400. Treat 400 `CAMPAIGN_NOT_ACTIVE` on a retry as "already paused" after checking `GET /api/campaigns/{campaignId}`. **Webhook events.** `audit.log_recorded` for webhooks subscribed to it. See [Webhooks](/webhooks). **Access** - **Required scope:** `full`. Admin-only route: `read`/`write` keys get 403; signed-in users need the admin or owner role. - **Rate limit:** Configuration mutations — 10 requests/min per workspace, shared with agent mutations, on top of the general API limit (120 to 600 requests/min by plan). See [Rate limits](/rate-limits). - **Plan:** Available on every plan.

Authentication

AuthorizationBearer
Workspace API key: `jl_` followed by 64 lowercase hex characters, created by the workspace owner in the dashboard (**Settings → API Keys**) and sent as `Authorization: Bearer jl_...`. The plaintext is shown once, at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys. | Scope | GET / HEAD | POST / PUT / PATCH / DELETE | Admin-only routes | | --- | --- | --- | --- | | `read` | Yes | No | No | | `write` | Yes | Yes | No | | `full` | Yes | Yes | Yes | Operations restricted to admins or owners reject keys without the `full` scope with `403`, and say so in their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret — that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds. See [Authentication](/authentication).

Path parameters

campaignIdstringRequiredformat: "uuid"

UUID of the campaign to pause. An unknown, deleted or foreign campaign answers 404; a value that is not a UUID answers 400.

Response

The campaign is now paused.

dataobject

A campaign row as returned by the retrieve, create, update, activate and pause endpoints. Keys are snake_case, exactly as stored. The list endpoint returns a lighter CampaignListItem instead.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
429
Too Many Requests Error