Voice Agents

Create a WebSocket call

Reserves a call and returns a single-use WebSocket URL for streaming raw audio from your own backend. The URL carries its own token, is valid for about two minutes, and can be connected exactly once. Connecting to that URL can itself be refused with 503 and body {"code": "capacity"} when the serving replica has no free call slot. The reservation is not consumed in that case, so create a new call and connect again. The message protocol — audio framing and every JSON event in both directions — is documented under Platform → Voice Agents → WebSocket transport.

POST
/v1/agents/voice/agents/{agent_id}/calls/websocket

Authorization

personalAccessToken
AuthorizationBearer <token>

Personal Access Token of a Dynamiq user — the only credential accepted by the management API (api.*). Prefix dyn_pat_ (legacy uak_ tokens still authenticate). Send as Authorization: Bearer <token>.

In: header

Path Parameters

agent_id*string

Voice agent UUID.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/agents/voice/agents/497f6eca-6276-4993-bfeb-53cbbbba6f08/calls/websocket" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "call_id": "0d0a16ab-a508-4d58-bf24-5dc3cb248f3e",
    "websocket_url": "string",
    "audio_format": {
      "encoding": "pcm_s16le",
      "sample_rate": 8000,
      "container": "raw"
    },
    "expires_at": "2019-08-24T14:15:22Z"
  }
}
{
  "error": {
    "code": "bad_request",
    "message": "Bad Request",
    "details": {
      "input": "cannot be blank"
    }
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}