Register a customer-owned number against the workspace's SIP trunk
Adds a number you already own — and already pay your own carrier for — to the workspace's SIP trunk. Unlike POST /v1/numbers/{id}/claim, this performs no price lookup and no wallet debit at creation time: there is no monthly rent on a BYO number, only per-minute call charges. Requires an active SIP trunk; see Bring your own SIP trunk.
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/numbers/byo" \ -H "Content-Type: application/json" \ -d '{ "e164": "+254712345678", "friendly_name": "Head office main line" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}Per-country outbound call rates for a tenant number GET
Returns the workspace's currently-effective per-country outbound rate card for the given number, sourced from the provider series rates resolved against the number's origin country and the workspace currency.
List the workspace's call-centre queues GET
Every queue in the active workspace, each with the roster that serves it in the order the switch will try it. **API-key scope:** `queues.read`. The workspace is the authenticated one and nothing else: there is no workspace id in any path or body in this group, so another tenant's queue cannot be named. A queue name is BARE — the switch staples the workspace on itself. ## One console queue, several API queues The dashboard manages EXACTLY ONE queue per workspace, named after the workspace id. This API supports as many as you like — but the two surfaces meet at `PUT /v1/numbers/{id}/routing`: a `queue` block with `name` omitted defaults to the workspace-id queue, and saving it re-points that number and re-provisions the queue from the routing body (sharing mode, agent pool, announcements). So a colleague saving a number in the console can move that number off a queue you created here, and can overwrite the workspace-id queue's settings. If you manage queues through this API, set `queue.name` explicitly on every routing save.