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" ] }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}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.
Mint a short-lived SIP JWT for the browser dialer POST
Workspace-scoped JWT consumed by the in-browser softphone to authenticate the WebSocket SIP registration. The response also carries the `endpoint`, `protocol` and ICE/TURN configuration the browser SDK needs — pass those through to the client rather than hard-coding them, so calling-infrastructure changes do not require a front-end release. Renew before `expiresIn` seconds elapse.