Mint a short-lived SIP JWT for the browser dialer
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.
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
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/sip/token"{ "token": "string", "endpoint": "string", "protocol": "string", "turnServer": {}, "clientName": "string", "expiresIn": 0}{ "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" }}Replace a queue's agent roster PUT
Replaces the queue's roster with the supplied extensions, IN ORDER, and pushes the workspace to the phone system. **API-key scope:** `queues.manage`. Viewer members are refused (`accounts.write_denied`). A LIST, not a set: the order is what `chosen_order` means. It is always stored, whatever the sharing mode, so switching modes later keeps the order you set. Positions come back 1-based; every agent is at level 1 (preference bands are not offered yet). WHOLESALE REPLACE: an extension left out is unbound from this queue and stops receiving its calls. The person is not deleted — they belong to the workspace and may serve other queues. Sending `{"agents": []}` empties the queue. All-or-nothing: every extension is resolved BEFORE anything is written, so a typo in the fourth name leaves the roster exactly as it was rather than half-applied. Each extension must be one with a LIVE LINE in this workspace — the devices that ring for it are resolved from your current records at save time, never taken from the request, so a re-enrolled app keeps ringing without a roster edit. A PSTN number is not an extension and cannot be a roster entry. Setting somebody's roster does not change their ACD status: a person the switch has on a break stays on it.
List credentials for a number GET
Next Page