Get analytics per channel
https://api.norreach.app/v1/analytics/channelsPer channel (email, SMS, WhatsApp, LinkedIn): messages sent, replies, the different people reached and who wrote back, and the reply rate (people who replied / people reached). Over from–to (YYYY-MM-DD, UTC; default the last 30 days, at most 366 days). Read-only.
curl -X GET "https://api.norreach.app/v1/analytics/channels" \
-H "Authorization: Bearer $NORREACH_API_KEY"{
"object": "channel_analytics",
"from": "2026-10-07",
"to": "2026-11-05",
"channels": [
{
"channel": "email",
"messages_sent": 1500,
"replies": 70,
"people_reached": 520,
"people_replied": 52,
"reply_rate": 0.1
},
{
"channel": "sms",
"messages_sent": 210,
"replies": 18,
"people_reached": 90,
"people_replied": 13,
"reply_rate": 0.1444
},
{
"channel": "whatsapp",
"messages_sent": 80,
"replies": 9,
"people_reached": 30,
"people_replied": 6,
"reply_rate": 0.2
},
{
"channel": "linkedin",
"messages_sent": 40,
"replies": 0,
"people_reached": 0,
"people_replied": 0,
"reply_rate": null
}
],
"truncated": false
}Authorizations
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
First day (YYYY-MM-DD, UTC; default 29 days before to).
Last day (YYYY-MM-DD, UTC; default today).
Response
200application/json— Get analytics per channel
First day (YYYY-MM-DD, UTC).
Last day (YYYY-MM-DD, UTC).
Show child attributesHide child attributes
emailsmswhatsapplinkedinMessages that went out (queued, sent, delivered, read).
Messages that came in.
Different people messages went out to.
Different people who wrote back.
people_replied / people_reached (0..1).
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.
| 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. |
| 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. |
| 422 | validation_failed | The request has invalid fields. |
| 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. |