Prerequisites
- A live, non-terminal call that is currently answered by a human agent (one that was escalated from the AI earlier, or answered by a person directly).
- The call’s
conference_id(the escalation creates the conference the human and caller now share). - The AI agent’s id — optional: if omitted, the handback re-invites the
same AI agent that originally escalated, read from the call’s handoff
record. Supply
ai_agent_idonly when a call was human-answered from the start, or when you want a different agent to resume.
Hand the call back
Send the human agent’s own conference leg ashuman_participant_call_sid
so it disconnects once the AI rejoins:
202 Accepted:
What the AI agent resumes with
The AI agent does not start over. It rejoins the call carrying:- everything it captured before escalating (collected details like an order number or verified identity), and
- the full merged conversation — the bot leg plus the human leg — so nothing the caller told the human has to be repeated.
handback_count in the persisted record
tracks how many times the call has returned.
The human never leaves the caller alone
The ordering is deliberate: the AI agent is invited back into the conference first, and the human’s leg is only disconnected after the AI confirms it answered. If the AI does not answer, the human stays on the line and the response reportsbot_answered: false, human_dropped: false — the caller is never left without anyone on the call.
Omit human_participant_call_sid for a monitor-only re-invite: the AI
rejoins but no leg is disconnected, so a human supervisor can keep
listening.
Every handback is recorded
Each handback appends an audit entry to the call with the reason, the user who initiated it, and when it happened — the same way the original AI-to-human escalation is recorded.Common errors
- 404
PARTICIPANT_NOT_IN_CONFERENCE— thehuman_participant_call_siddoes not belong to a conference on your account. Re-read the leg id from your own active call. - 409
CALL_TERMINAL— the call already ended. Handback is only valid on a live call. - 409
NOT_HUMAN_HANDLED— the call is not currently answered by a human agent; there is nothing to hand back. - 422 validation error —
reasonandconference_idare required;conference_idmust matchconf_plus 32 hex characters. - 422
ai_agent_idrequired — the call has no prior AI-escalation to infer the agent from, so send it explicitly.
Cross-references
- Escalate the other way (AI to human) via handoff targets: Handoff Targets
- Voice channel reference: Channels → Voice
- Voice API reference: API → Voice & Numbers