Move this caller to a teammate or a number
const url = 'https://api.vocapable.com/v1/workspace/calls/example/transfers';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"mode":"warm","to_user_id":"example","destination_id":"example","notes":"example","customer_agreed":false}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/workspace/calls/example/transfers \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "mode": "warm", "to_user_id": "example", "destination_id": "example", "notes": "example", "customer_agreed": false }'Commit recipient custody before the once-only carrier request (PRD E5-R1..R3).
A retry finds transfer_pending and cannot originate a second recipient leg. Lost responses preserve the requested transfer; signed callbacks can bind its exact SID.
warm- the teammate is rung into the call; the handler hands over when they joined. An AI-handed-over or queued caller is whispered to the teammate first (E3-R6): their leg hears the brief before it joins the room.blind- the customer is put on hold with the line’s hold audio, the teammate is rung, and the handler’s leg is hung up: they owe the wrap-up at once. The open transfer holds the caller until the teammate joins; a miss rings the handler back once, then apologizes and leaves a callback task (transfer_modes).external- an owner-allow-listed number is rung with the business caller ID; the handler hands over when it answered, exactly like a warm transfer.receptionist- the line’s AI receptionist takes the caller (E5-R2); see :func:_hand_to_receptionistandworkspace_calls.receptionist.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”Move the caller (PRD E5-R1..R3).
warm (the default) and blind name a teammate; external names an
allow-listed destination; receptionist names nobody.
Responses
Section titled “Responses”Successful Response
object
A teammate named on a record: the id the server holds and the name to show.
object
object
A teammate named on a record: the id the server holds and the name to show.
object
A teammate named on a record: the id the server holds and the name to show.
object
A number the owner allow-listed for external transfers and three-way calls (E5-R3).
object
The work a call was placed from, carried to its wrap-up (PRD E10-R1/R2).
Each link is null when there is none, and also when the record has since been deleted or is no longer one the handler may see.
object
One piece of work a call is linked to, as the handler may see it.
object
One piece of work a call is linked to, as the handler may see it.
object
One piece of work a call is linked to, as the handler may see it.
object
One piece of work a call is linked to, as the handler may see it.
object
One piece of work a call is linked to, as the handler may see it.
object
One piece of work a call is linked to, as the handler may see it.
object
The business line a call came from (E12-R1): the company’s own number, named.
object
An extra leg of a live call (E5-R4 three-way, E5-R7 the handler’s own phone).
object
A teammate named on a record: the id the server holds and the name to show.
object
What a person is told about a call’s transcript (PRD E7-R6, E6-R8).
label is the exact sentence the clients show (“Transcribing”, “Not recorded - made
from a personal phone”, …) so the web console and the app use the same words.
object
The persistent recording indicator and its controls (Apple 2.5.14).
object
A UI hint about the far party’s location; NEVER suppresses the announcement.
A manager or owner listening to, whispering to or joined to a live call.
Shown to the REP on their own call (notice: “Priya is listening”) - supervision is
never silent. ringing = the supervisor’s leg is connecting; joined = the carrier
confirmed it is in the call.
object
A teammate named on a record: the id the server holds and the name to show.
object
How an inbound caller reached the person who answered (PRD E3-R2, E3-R11).
queue: they answered the caller from the shared-phone queue (app, browser or
verified phone) - ticket_id is the queue’s record of the caller. ai_handoff:
they took the AI receptionist’s direct handoff - handoff_request_id is the live
handoff (its brief is /call-handoffs/{id}/brief). ai_call_id is the AI
receptionist’s call the caller had first, when there was one.
A due scheduled callback the server rang the person’s app for (PRD E2-R7).
label is what the ring shows once the app has read the call (“Callback: Dana,
Lakeside”); the VoIP push itself carries identifiers only. The customer is dialled only
after the person answers that ring.
object
Example
{ "direction": "outbound", "phase": "requested", "recording": "off", "outcome": "conversation", "transfer": { "state": "requested", "kind": "warm", "destination": { "payment_line": false } }, "channel": "app", "participants": [ { "kind": "teammate", "state": "requested" } ], "transcription": { "status": "off", "untranscribed_reason": "personal_phone", "label": "Not transcribed" }, "wrap_up_provenance": { "additionalProperty": "ai_drafted" }, "recording_status": { "state": "off", "line_mode": "off", "consent_hint": { "kind": "all_party_state" }, "refusal_source": "rep" }, "supervision": { "mode": "listen", "channel": "app", "state": "requested" }, "answered_from": { "kind": "queue" }}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}