List campaigns
GET
https://api.norreach.app/v1/campaignsThe workspace's campaigns (broadcasts, sequences and multichannel campaigns — automations are under /automations), newest first, a page at a time. Archived campaigns are left out unless you ask for status=archived.
campaigns:readOperation id: list_campaigns
GET/campaigns
curl -X GET "https://api.norreach.app/v1/campaigns" \
-H "Authorization: Bearer $NORREACH_API_KEY"List campaigns
{
"object": "list",
"data": [
{
"id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"object": "campaign",
"name": "Summer nurses — Stockholm",
"status": "draft",
"kind": "sequence",
"channels": [
"email",
"sms"
],
"step_count": 2,
"brand_id": null,
"schedule_at": null,
"created_at": "2026-11-04T09:12:33.120Z"
}
],
"has_more": false,
"next_cursor": null
}Authorizations
Authorizationstringheaderrequired
Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope campaigns:read. API keys and scopes
Query parameters
limitintegerquery
Page size (1–200, default 50).
cursorstringquery
The next_cursor of the previous page.
statusenumquery
One of:
draftactivepausedcompletedarchivedneeds_reviewkindenumquery
One of:
broadcastsequencemultichannelResponse
200application/json— List campaigns
object"list"required
dataobject[]required
Show child attributesHide child attributes
data[].idstring (uuid)required
An id (UUID).
data[].object"campaign"required
data[].namestringrequired
data[].statusstringrequired
draft, active, paused, completed, archived or needs_review.
data[].kindenumrequired
One of:
broadcastsequencemultichanneldata[].channelsstring[]required
The channel mix of the sequence, in order.
data[].step_countintegerrequired
data[].brand_idstring (uuid) | nullrequired
data[].schedule_atstring | nullrequired
data[].created_atstringrequired
RFC 3339 UTC timestamp with milliseconds.
has_morebooleanrequired
next_cursorstring | nullrequired
Errors
Errors are application/problem+json with a stable code.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request couldn't be read. |
| 400 | unknown_field | The request has a field this operation doesn't know. |
| 400 | invalid_cursor | That cursor doesn't belong to this list. |
| 401 | unauthorized | A valid API key is required. |
| 403 | insufficient_scope | This API key doesn't have the scope this operation needs. |
| 403 | feature_not_enabled | The API isn't switched on for this workspace. |
| 429 | rate_limited | Too many requests. Slow down and try again. |
| 500 | server_error | Something went wrong on our side. |
| 503 | unavailable | The API isn't available right now. Try again shortly. |