API Reference
Dialer

Send a waiting caller to an AI agent

POST
/v1/dialer/calls/{attempt_id}/handoff-to-ai

Sends an answered caller who has no extension yet to a published AI agent. It works once per caller and only while the caller is still held (hold, hold line or callback offer): a caller already connected to a person, already with an AI, or who has hung up returns 409 dialer.invalid_state, and no second AI leg is ever started. 202 means the request is recorded; the call moves within one hold step (a few seconds), or at once when the phone system supports redirect (via: redirect). The AI minutes are billed to the workspace wallet as dialer_overflow. If the agent cannot take the call, the caller carries on down the overflow ladder (callback offer, then apology), never into silence. Needs dialer.supervise.

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

attempt_id*string

The attempt_id of a waiting caller on the live board.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/dialer/calls/497f6eca-6276-4993-bfeb-53cbbbba6f08/handoff-to-ai" \  -H "Content-Type: application/json" \  -d '{}'
{  "attempt_id": "7a838dca-3ea8-4a7c-8133-ba2c86aeb22d",  "agent_id": "2b1e3b65-2c04-4fa2-a2d7-467901e98978",  "status": "requested",  "via": "ladder"}
{  "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"  }}
{  "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"  }}