Docs
Analytics

Get the analytics overview

GEThttps://api.norreach.app/v1/analytics/overview

The workspace's outreach at a glance: contacts added, messages sent and replies (and the different people behind them), AI calls and how many reached a person, meetings booked, and the campaigns running now. Over from–to (YYYY-MM-DD, UTC; default the last 30 days, at most 366 days). Read-only.

analytics:readOperation id: get_analytics_overview
GET/analytics/overview
curl -X GET "https://api.norreach.app/v1/analytics/overview" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
Get the analytics overview
{
  "object": "analytics_overview",
  "from": "2026-10-07",
  "to": "2026-11-05",
  "contacts": {
    "added": 214
  },
  "messages": {
    "sent": 1830,
    "replies": 97,
    "people_reached": 640,
    "people_replied": 71,
    "reply_rate": 0.1109
  },
  "calls": {
    "total": 120,
    "connected": 46,
    "connect_rate": 0.3833
  },
  "meetings": {
    "booked": 18
  },
  "campaigns": {
    "active": 4
  },
  "truncated": false
}

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

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 the analytics overview

object"analytics_overview"required
fromstringrequired

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

tostringrequired

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

contactsobjectrequired
Show child attributes
contacts.addedintegerrequired

Contacts created in the range.

messagesobjectrequired
Show child attributes
messages.sentintegerrequired
messages.repliesintegerrequired
messages.people_reachedintegerrequired
messages.people_repliedintegerrequired
messages.reply_ratenumber | nullrequired

0..1 (four decimals); null when there is nothing to divide by.

callsobjectrequired
Show child attributes
calls.totalintegerrequired
calls.connectedintegerrequired

Calls that reached a person.

calls.connect_ratenumber | nullrequired

0..1 (four decimals); null when there is nothing to divide by.

meetingsobjectrequired
Show child attributes
meetings.bookedintegerrequired

Meetings booked in the range (from every source).

campaignsobjectrequired
Show child attributes
campaigns.activeintegerrequired

Campaigns running now.

truncatedbooleanrequired

true when a source held more rows than the people / per-day roll-ups read (10 000); the totals are exact counts either way.

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.
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.