Retrieve a campaign

View as Markdown
Returns the full campaign row: status, channel, schedule, retry settings, product context and the WhatsApp or email content. Unlike the list, it has no contact aggregates. For those use `GET /api/campaigns`, and for the contacts themselves `GET /api/campaigns/{campaignId}/contacts`. Poll this after `PATCH /api/campaigns/{campaignId}/activate` to find out when `status` becomes `completed`, or better, subscribe to the `campaign.completed` webhook. A `paused` campaign with a non-null `blocked_reason` was paused by the system and needs the fix it describes. **Consistency.** Cached for up to 120 seconds. API mutations clear the cache at once. A status change the system makes by itself (auto-completion, system pause) can take up to 120 seconds to appear here. **Access** - **Required scope:** `read` (or `write`/`full`). - **Rate limit:** General API — 120 to 600 requests/min per workspace depending on 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, as returned in id by GET /api/campaigns. A campaign from another workspace or a deleted one answers 404; a value that is not a UUID answers 400.

Response

The campaign.
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
429
Too Many Requests Error