Skip to navigation

Assign inbound routing

Saves the assignment then configure inbound routing when requested and supported. Return setup state even when provider setup fails after saving. Never silently clear another number. Same-key replay returns the prior attempt receipt. For a new attempt after a known setup failure, use a new idempotency key and current number ETag. Read GET /phone-numbers/{number_id} for current state. at most one inbound agent per number; an agent may have many inbound numbers. Canonical E164 ownership remains global. Foreign claims return only Connected elsewhere, never foreign owner identity.

Authentication

AuthorizationBearer

Create and manage workspace-owned keys through the existing app session routes, outside this public API. Creator and manager identities are audit actors only. Key validity follows workspace policy, expiry and explicit revocation, independently of creator membership. Do not include a workspace-selection header.

Path parameters

number_idstringRequired1-128 characters
Resource identity within the authenticated workspace.

Headers

If-MatchstringRequired

Strong ETag from the resource being changed. Draft/tool/variable/publication operations use the complete agent draft ETag; number operations use the number ETag; MCP update uses its own ETag. Never retry a stale edit by blindly using a fresh ETag. Agent identity edits use the identity ETag; knowledge-source reingest uses the source ETag. A stale revision returns 409: draft_conflict for agent, draft, variable, tool, MCP server and publication-token checks; conflict with details.reason=stale_revision for phone numbers and knowledge sources. A missing header returns 428 revision_required. Same-intent replay uses the original If-Match and returns its receipt before checking current revision.

Idempotency-KeystringRequired1-255 characters

Stable key per logical intent, 1–255 printable characters. Persist it before sending. Retry the same key/body after an uncertain result for 24 hours. A changed body conflicts. Beyond retention, reconcile the resource before retrying; this is not permanent deduplication. Current authorization is rechecked on replay. Evaluation order: authenticate and check current authorization; look up intent; replay its stored receipt before checking the current revision; only a new intent evaluates If-Match and executes. Fingerprint includes method, path, body and original If-Match. A changed request returns idempotency_key_reused. The server stores only a keyed (HMAC) fingerprint, and no error or response ever returns a fingerprint or hash of a request. In-flight intent returns 409 idempotency_in_progress with Retry-After; retry the same intent after reconciliation. Receipts describe that attempt, not current resource state. A replay returns the original status code and body, with the response header Idempotent-Replayed: true.

Request

This endpoint expects an object.
agent_idstringRequired<=128 characters
Opaque agent identifier. Do not parse its contents.
configure_inboundbooleanOptionalDefaults to true

Applies to inbound only. After saving assignment, configure supported carrier routing. false saves assignment with an explicit setup-needed state.

Response headers

X-Request-IdstringOptional
Safe server request correlation ID.
ETagstringOptional
Strong number revision. Use for number assignment edits.
RateLimit-LimitintegerOptional
Requests allowed in the current window for the tightest applicable limit.
RateLimit-RemainingintegerOptional
Requests left in the current window.
RateLimit-ResetintegerOptional
Seconds until the current window resets.
Idempotent-ReplayedstringOptional

true when this response replays a stored Idempotency-Key result. The status and body equal the original.

Response

Assign an agent to an existing number.
numberobject
assignment_savedboolean
setup_statestring

Open response vocabulary. Preserve unknown values; never assume they mean success.

next_actionstring or null

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
413
Content Too Large Error
428
Precondition Error
429
Too Many Requests Error
500
Internal Server Error
502
Bad Gateway Error
503
Service Unavailable Error