Docs
Campaigns

One campaign

GEThttps://api.norreach.app/v1/campaigns/{id}

A campaign with its sequence, rules, its own settings override and its numbers right now (enrolled, in progress, replied, meetings, sent, delivered, opened, clicked).

campaigns:readOperation id: get_campaign
GET/campaigns/{id}
curl -X GET "https://api.norreach.app/v1/campaigns/{id}" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
One campaign
{
  "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",
  "steps": [
    {
      "channel": "email",
      "wait_hours": 0,
      "template": "Subject: Nurses for the summer\n\nHi {{first_name}}, …"
    },
    {
      "channel": "sms",
      "wait_hours": 48,
      "template": "Hi {{first_name}}, did you see my email?"
    }
  ],
  "rules": [
    {
      "name": "Stop on reply",
      "when": {
        "event": "replied"
      },
      "then": {
        "action": "pause"
      }
    }
  ],
  "settings": {
    "approve_before_send": "manual"
  },
  "stats": {
    "enrolled": 120,
    "in_progress": 80,
    "paused": 4,
    "completed": 20,
    "replied": 14,
    "meetings_booked": 2,
    "sent": 210,
    "delivered": 204,
    "opened": 96,
    "clicked": 12
  }
}

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

Path parameters

idstring (uuid)pathrequired

An id (UUID).

Response

200application/json— One campaign

idstring (uuid)required

An id (UUID).

object"campaign"required
namestringrequired
statusstringrequired

draft, active, paused, completed, archived or needs_review.

kindenumrequired
One of:broadcastsequencemultichannel
channelsstring[]required

The channel mix of the sequence, in order.

step_countintegerrequired
brand_idstring (uuid) | nullrequired
schedule_atstring | nullrequired
created_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

stepsobject[]required

The sequence (the step shape above).

rulesobject[]required
settingsobjectrequired

The campaign's own settings override.

statsobjectrequired

The campaign's numbers right now.

Show child attributes
stats.enrolledintegerrequired
stats.in_progressintegerrequired
stats.pausedintegerrequired
stats.completedintegerrequired
stats.repliedintegerrequired
stats.meetings_bookedintegerrequired
stats.sentintegerrequired
stats.deliveredintegerrequired
stats.openedintegerrequired
stats.clickedintegerrequired

Errors

Errors are application/problem+json with a stable code.

StatusCodeMeaning
400bad_requestThe request couldn't be read.
400unknown_fieldThe request has a field this operation doesn't know.
401unauthorizedA valid API key is required.
403insufficient_scopeThis API key doesn't have the scope this operation needs.
403feature_not_enabledThe API isn't switched on for this workspace.
404not_foundThat doesn't exist.
429rate_limitedToo many requests. Slow down and try again.
500server_errorSomething went wrong on our side.
503unavailableThe API isn't available right now. Try again shortly.