Docs
Calls

Who answers incoming calls

GEThttps://api.norreach.app/v1/inbound-routing

The workspace's routing rules (per number, or for every number without its own: an AI agent, your team, the call menu or voicemail; by priority, optionally in business hours only) and the numbers whose answering can be switched between the AI agent and the call menu.

calls:readOperation id: get_inbound_routing
GET/inbound-routing
curl -X GET "https://api.norreach.app/v1/inbound-routing" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
Who answers incoming calls
{
  "object": "inbound_routing",
  "rules": [
    {
      "id": "0d1e2f3a-4b5c-4d6e-8f7a-8b9c0d1e2f3a",
      "object": "routing_rule",
      "phone_number_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
      "route_type": "ai_agent",
      "ai_agent_id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
      "assigned_user_id": null,
      "priority": 10,
      "business_hours_only": false,
      "greeting": null,
      "active": true,
      "created_at": "2026-10-01T08:00:00.000Z"
    }
  ],
  "numbers": [
    {
      "id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
      "object": "routing_number",
      "number": "+46812345678",
      "label": "Stockholm office",
      "inbound_mode": "ai"
    }
  ]
}

Authorizations

Authorizationstringheaderrequired

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

Response

200application/json— Who answers incoming calls

object"inbound_routing"required
rulesobject[]required
Show child attributes
rules[].idstring (uuid)required

An id (UUID).

rules[].object"routing_rule"required
rules[].phone_number_idstring (uuid) | nullrequired

Null = every number of the workspace without a rule of its own.

rules[].route_typeenumrequired

ai_agent = an AI agent answers; human = your team (the hold queue, or one person); ivr = the call menu; voicemail.

One of:ai_agenthumanivrvoicemail
rules[].ai_agent_idstring (uuid) | nullrequired
rules[].assigned_user_idstring (uuid) | nullrequired
rules[].priorityintegerrequired
rules[].business_hours_onlybooleanrequired
rules[].greetingstring | nullrequired
rules[].activebooleanrequired
rules[].created_atstring | nullrequired
numbersobject[]required

The numbers whose answering can be switched (PUT /phone-numbers/{id}/inbound-mode).

Show child attributes
numbers[].idstring (uuid)required

An id (UUID).

numbers[].object"routing_number"required
numbers[].numberstringrequired
numbers[].labelstring | nullrequired
numbers[].inbound_modeenumrequired
One of:aimenu

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