List campaigns

View as Markdown
Returns the workspace's campaigns, newest first (`created_at` descending). Each item carries the agent's name and live contact aggregates (`total_contacts`, `pending_contacts`, `called_contacts`, `converted_contacts`, `conversion_rate`). Use it for a dashboard or to find a campaign's `id`. For the full row, including the product context and the WhatsApp or email content, call `GET /api/campaigns/{campaignId}`. Pagination is by page number: `page` and `limit` are echoed back in `meta`, but there is **no total count**. Keep requesting the next page until you get fewer than `limit` items. Soft-deleted campaigns and the system-owned `manual` campaign (it holds ad-hoc conversations) are never listed. **Consistency.** Pages are cached for up to 60 seconds. API mutations clear the cache at once. Changes the system makes by itself, like auto-completion or a system pause, can take up to 60 seconds to appear. **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).

Query parameters

pageintegerOptional1-100000Defaults to 1

1-indexed page number. A value that is not an integer between 1 and 100000 is rejected with 400.

limitintegerOptional1-100Defaults to 20

Campaigns per page. A value that is not an integer between 1 and 100 is rejected with 400 (it is not clamped).

Response

One page of campaigns.
datalist of objects
metaobject
The pagination parameters that were applied. There is no total.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
429
Too Many Requests Error