Docs
Analytics

Get one campaign's analytics

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

One campaign's (or automation's) numbers: where its contacts stand now (in progress, paused, completed, replied, meeting booked), and its messages sent, delivered, opened, clicked and replied to and its AI calls over the range. Over from–to (YYYY-MM-DD, UTC; default the last 30 days, at most 366 days). Another workspace's campaign is 404. Read-only.

analytics:readOperation id: get_campaign_analytics
GET/analytics/campaigns/{id}
curl -X GET "https://api.norreach.app/v1/analytics/campaigns/{id}" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
Get one campaign's analytics
{
  "object": "campaign_analytics",
  "campaign_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "name": "Clinics — winter staffing",
  "kind": "campaign",
  "status": "active",
  "from": "2026-10-07",
  "to": "2026-11-05",
  "enrollments": {
    "total": 240,
    "in_progress": 150,
    "paused": 6,
    "completed": 60,
    "replied": 19,
    "meetings_booked": 5
  },
  "messages": {
    "sent": 610,
    "delivered": 598,
    "opened": 0,
    "clicked": 0,
    "replies": 22
  },
  "calls": {
    "total": 30,
    "connected": 11
  }
}

Authorizations

Authorizationstringheaderrequired

Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope analytics:read. API keys and scopes

Path parameters

idstring (uuid)pathrequired

An id (UUID).

Query parameters

fromstring (date)query

First day (YYYY-MM-DD, UTC; default 29 days before to).

tostring (date)query

Last day (YYYY-MM-DD, UTC; default today).

Response

200application/json— Get one campaign's analytics

object"campaign_analytics"required
campaign_idstring (uuid)required

An id (UUID).

namestringrequired
kindenumrequired
One of:campaignautomation
statusstringrequired
fromstringrequired

First day (YYYY-MM-DD, UTC).

tostringrequired

Last day (YYYY-MM-DD, UTC).

enrollmentsobjectrequired

Where the campaign's contacts stand now (not limited to the range).

Show child attributes
enrollments.totalintegerrequired
enrollments.in_progressintegerrequired
enrollments.pausedintegerrequired
enrollments.completedintegerrequired
enrollments.repliedintegerrequired
enrollments.meetings_bookedintegerrequired
messagesobjectrequired

Messages of this campaign in the range.

Show child attributes
messages.sentintegerrequired
messages.deliveredintegerrequired
messages.openedintegerrequired
messages.clickedintegerrequired
messages.repliesintegerrequired
callsobjectrequired

AI calls of this campaign in the range.

Show child attributes
calls.totalintegerrequired
calls.connectedintegerrequired

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.
422validation_failedThe request has invalid fields.
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.