Voice

Request Handoff

Flag the call for a human follow-up: the first request puts a task note for a human on the lead's timeline (RO-134). RO-064: with ``live_transfer: true`` and a live-transfer target the workspace allows now (Settings -> Live transfer: enabled, within its hours, on an outbound call dialled through LiveKit SIP, not a test call, no opt-out), the answer carries ``transfer`` (the team line and its ring timeout) and the task note waits for ``/transfer-result`` instead.

API key access

This route has its own authentication (or none); an API key is not used here.
POST/api/v1/calls/{call_id}/handoff
AuthorizationBearer <token>

Per-call token issued when the call was created (job metadata api_token).

In: header

Path Parameters

call_idstring
Formatuuid

Header Parameters

X-Workspace-Id?string | null

Workspace of the call (must match the token).

lead_idstring
Formatuuid
reason?string
Default""
Lengthlength <= 2000
live_transfer?boolean

RO-064: the worker can bridge this call to a person now (the caller asked for one on an outbound SIP call); the answer may then carry transfer.

Defaultfalse

Response Body

curl -X POST "http://localhost:8000/api/v1/calls/497f6eca-6276-4993-bfeb-53cbbbba6f08/handoff" \  -H "X-Workspace-Id: string" \  -H "Content-Type: application/json" \  -d '{    "lead_id": "9bddab70-98e6-43a9-8f32-c9788b9de0c0"  }'
{
  "accepted": true,
  "message": "string",
  "transfer": {}
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}