API Reference
Queues

Get one queue and its roster

GET
/v1/queues/{name}

API-key scope: queues.read.

Authorization

bearerAuth
AuthorizationBearer <token>

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

Path Parameters

name*string

The queue's bare name, as created.

Match^[A-Za-z0-9._-]{1,64}$

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/queues/string"
{  "queue": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "name": "string",    "sharing_mode": "longest_free",    "max_wait_seconds": 0,    "max_depth": 0,    "discard_abandoned_after_seconds": 0,    "announce_position": true,    "announce_frequency_seconds": 0,    "moh_url": "string",    "agents": [      {        "extension": "string",        "level": 0,        "position": 0      }    ],    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z"  }}
{  "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"  }}
{  "error": {    "code": "validation.bad_request",    "message": "string",    "request_id": "string",    "details": [      "string"    ],    "resolution": "string",    "reason": "invalid_characters",    "suggested_e164": "+254727524723"  }}

Create a call-centre queue POST

Creates a queue and pushes the workspace's configuration to the phone system as part of the request. **API-key scope:** `queues.manage`. Viewer members are refused (`accounts.write_denied`). Create-only: a name this workspace already uses is a `409`, never a silent overwrite. The queue is created EMPTY — the roster is set separately, with `PUT /v1/queues/{name}/agents`, so a settings save can never empty a team by omission. Every setting is optional and every omitted setting takes its default; see `CallQueueSettings`.

Replace a queue's settings PUT

**API-key scope:** `queues.manage`. Viewer members are refused (`accounts.write_denied`). ## This is a FULL REPLACE, not a patch An omitted setting RETURNS TO ITS DEFAULT — it does not keep the value the previous save left. The body you send is the queue you get. To change one setting, send every setting you want to keep along with it; `GET /v1/queues/{name}` first if you do not have them to hand. Concretely: a queue saved with `max_wait_seconds: 600` and then updated with a body of `{"sharing_mode": "take_turns"}` comes back with `max_wait_seconds: 0` (hold indefinitely) and `announce_position: false`. The ROSTER is the exception, because it is not part of this body at all: agents are untouched by an update and are replaced only through `PUT /v1/queues/{name}/agents`. Queues cannot be renamed. `name` may be omitted from the body; if it is present it must equal the name in the path, and a mismatch is a `400` rather than a silently ignored rename. Update-only: an unknown name is a `404`, not an implicit create.