Pause a campaign
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. campaign.paused ({ campaign_id, campaign_name, agent_id, channel, status: paused, reason: manual }), once per pause, and audit.log_recorded for webhooks subscribed to it. See Webhooks.
Access
- Required scope:
full. Admin-only route:read/writekeys 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.
- Plan: Available on every plan.
Authentication
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.
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.
Path parameters
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.
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.
Removed from responses (2026-09-15). retry_policy, voicemail_action and voicemail_message
were legacy columns nothing read; none of them was ever settable through this API and none is
returned any more. Redials come from max_retry_attempts and retry_interval_minutes; voicemail
detection is an agent setting (enableVoicemailDetection).

