Skip to navigation

List a campaign's contacts

View as Markdown

Returns the campaign’s contacts, oldest first (created_at ascending), optionally filtered by status. Use status=pending to see who is still to be reached, or status=dnc to review opt-outs. Items leave out metadata and the CRM sync columns.

Pagination is by page number, with a total across all pages: keep requesting pages while page * limit < total.

Consistency. Pages are cached for up to 30 seconds. Adding contacts or a dialer claim clears the cache, but status changes from finished calls can take up to 30 seconds to appear.

Access

  • Required scope: read (or write/full).
  • Rate limit: General API — 120 requests/min per workspace on Starter or with no active plan, 200 on Growth, 300 on Business, 600 on Enterprise. The 5/min contacts-import limit does not apply to this route. See 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.

ScopeGET / HEADPOST / PUT / PATCH / DELETEAdmin-only routes
readYesNoNo
writeYesYesNo
fullYesYesYes

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

campaignIdstringRequiredformat: "uuid"

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

Query parameters

pageintegerOptional1-100000Defaults to 1

1-indexed page number. An out-of-range or non-integer value is rejected with 400 Invalid query params.

limitintegerOptional1-100Defaults to 50

Contacts per page. An out-of-range or non-integer value is rejected with 400 (not clamped).

statusenumOptional

Only contacts in this status (see CampaignContactListItem.status). An unknown value is rejected with 400.

Response

One page of contacts.
dataobject

Errors

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