Skip to main content

Offer this call to another agent or a department

POST 

/api/calls/:callId/transfer

Hand a live call over (SES-1 F4 — devir). A transfer is a PROPOSAL with a deadline, not a hand-off that happens by itself, and the whole design follows from one promise: THE CUSTOMER IS NEVER SILENT AND NEVER OWNERLESS.

Order of operations, which is the feature and not an implementation detail:

  1. the customer is PARKED first — hold reason: transfer, so they hear hold music while this is arranged — and the row says "held" only after the bridge confirms it. A bridge that cannot park anyone refuses the whole transfer with 501 rather than handing the customer to silence;
  2. the target is rung through the SAME pipeline an inbound call uses (targeted push + banner), flagged as a transfer so a device can say who is handing it over;
  3. the call keeps belonging to the agent who answered it. answered_by moves only on accept, in one conditional UPDATE, so two targets pressing at once produce one winner and one honest 409.

Every way the proposal can fail — declined, timed out, cancelled — leaves the call with the offering agent and the customer still parked.

Only the agent HOLDING the call may offer it: reply permission lets a colleague answer a ringing call, it must not let them push a live conversation onto someone else's phone.

Request​

Responses​

The customer is parked and the target is ringing. Accepted rather than OK because the hand-off has NOT happened yet — the call is still the offering agent's until somebody takes it.