Connected senders
https://api.norreach.app/v1/sendersWhat the workspace can send from, per channel — email inboxes, verified domain senders, phone numbers (texting, AI calling, or voice only), WhatsApp numbers and LinkedIn seats — read exactly the way a campaign launch checks them, so channels.<channel>.ready: false is the reason a launch answers 409 no_sender. Connecting senders happens in the app.
curl -X GET "https://api.norreach.app/v1/senders" \
-H "Authorization: Bearer $NORREACH_API_KEY"{
"object": "senders",
"channels": {
"email": {
"ready": true,
"count": 1
},
"sms": {
"ready": false,
"count": 0
},
"call": {
"ready": true,
"count": 1
},
"whatsapp": {
"ready": false,
"count": 0
},
"linkedin": {
"ready": false,
"count": 0
}
},
"data": [
{
"object": "sender",
"kind": "email_inbox",
"label": "email inbox",
"address": "sales@acme.example",
"name": null,
"channels": [
"email"
],
"status": "connected",
"verified": true,
"voice_only": false,
"ai_calling": null,
"country": null
},
{
"object": "sender",
"kind": "phone_number",
"label": "phone number",
"address": "+46812345678",
"name": "Stockholm office",
"channels": [
"call"
],
"status": "connected",
"verified": true,
"voice_only": true,
"ai_calling": true,
"country": "SE"
}
],
"complete": true
}Authorizations
Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope workspace:read. API keys and scopes
Response
200application/json— Connected senders
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
email_inboxdomain_senderphone_numberwhatsapp_numberlinkedin_seat"email inbox", "domain sender", "phone number", "WhatsApp number" or "LinkedIn seat".
The address, domain, number or seat name.
What you called it, when you named it.
What it can send on now.
connected / verified, or the seat's state (e.g. needs_attention).
A number that can call but not text.
Numbers: connected to AI calling.
false: a part couldn't be read just now — what's missing may be connected.
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. |
| 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. |