transfer_bridged means the transfer worked: the destination answered and the caller is now talking to them. The agent then leaves the call.
When it fires#
After transfer_started, once the transfer driver reports success:
- Cold transfer: the destination accepted the SIP transfer.
- Warm transfer: the destination answered and the handoff message was played.
- Agentic warm transfer: the transfer agent connected the caller.
Right after this event the agent ends its part of the call, which sends call_ended with disconnection_reason call_transfer. Because events are delivered independently, call_ended can reach you before transfer_bridged.
Phone calls only.
Which settings enable it#
- Off by default. Add
transfer_bridgedto the agent'swebhook_events. - URL: the agent's
webhook_url, else the workspace URL (no{{variable}}substitution). - Timeout: the workspace timeout, else 10 s.
Payload#
{
"event": "transfer_bridged",
"call": {
"call_id": "call_8c2e5a1f7b3d9e0c4a6f2b18",
"call_type": "phone_call",
"agent_id": "agent_5b0e2c7d9a1f4e3b8c6d2a10",
"agent_version": 2,
"agent_name": "Bondi Dental Front Desk",
"call_status": "ongoing",
"direction": "inbound",
"from_number": "+61412345678",
"to_number": "+61291234567",
"metadata": {},
"retell_llm_dynamic_variables": { "business_name": "Bondi Dental" },
"collected_dynamic_variables": {},
"start_timestamp": 1760675400120,
"end_timestamp": null,
"duration_ms": null,
"transcript": "Agent: Hi, thanks for calling Bondi Dental, this is Ava. How can I help you today?\nUser: I need to talk to the dentist about my bill.\nAgent: Sure, I'll put you through to our practice manager now.",
"transcript_object": [
{ "role": "agent", "content": "Hi, thanks for calling Bondi Dental, this is Ava. How can I help you today?", "words": [] },
{ "role": "user", "content": "I need to talk to the dentist about my bill.", "words": [] },
{ "role": "agent", "content": "Sure, I'll put you through to our practice manager now.", "words": [] }
],
"transcript_with_tool_calls": [
{ "role": "agent", "content": "Hi, thanks for calling Bondi Dental, this is Ava. How can I help you today?", "ts": 1760675400340 },
{ "role": "user", "content": "I need to talk to the dentist about my bill.", "ts": 1760675405910 },
{ "role": "tool_call_invocation", "tool_call_id": "call_tool_01", "name": "transfer_to_manager", "arguments": "{}", "ts": 1760675406650 },
{ "role": "agent", "content": "Sure, I'll put you through to our practice manager now.", "ts": 1760675406700 },
{ "role": "transfer", "event": "transfer_started", "destination": "+61298765432", "ts": 1760675409210 },
{ "role": "transfer", "event": "transfer_bridged", "destination": "+61298765432", "ts": 1760675421880 }
],
"recording_url": null,
"recording_multi_channel_url": null,
"public_log_url": "https://api.tried.com.au/public/calls/call_8c2e5a1f7b3d9e0c4a6f2b18/log?exp=1761280221950&sig=9f2b5e8a1d4c7f0b3e6a9d2c5f8b1e4a7d0c3f6b9e2a5d8c1f4b7e0a3d6c9f2b",
"knowledge_base_retrieved_contents_url": "https://api.tried.com.au/public/calls/call_8c2e5a1f7b3d9e0c4a6f2b18/kb-retrievals?exp=1761280221950&sig=c5f8b1e4a7d0c3f6b9e2a5d8c1f4b7e0a3d6c9f2b5e8a1d4c7f0b3e6a9d2c5f8",
"transfer_destination": "+61298765432",
"llm_token_usage": { "values": [1650, 1720], "average": 1685, "num_requests": 2 },
"disconnection_reason": null,
"call_analysis": null,
"latency": {
"e2e": { "p50": 702, "p90": 702, "p95": 702, "p99": 702, "max": 702, "min": 688, "num": 2, "values": [688, 702] }
},
"call_cost": null,
"batch_call_id": null,
"contact_id": "contact_6e2a9c1f4b7d0e3a5c8f1b24"
},
"transfer": {
"destination": "+61298765432",
"timestamp": 1760675421880
}
}Fields#
| Field | Type | Description |
|---|---|---|
transfer.destination |
string | The number or SIP URI that answered |
transfer.timestamp |
integer | When the legs were bridged, Unix ms |
The call object reflects the moment of the bridge. If the call has already ended by the time the payload is built, call_status is ended and disconnection_reason is call_transfer. See Call object.
Billing note#
The agent leaves the call at the bridge, so Tried's per-minute charge stops there. The transferred leg runs on your own trunk and your carrier bills it.
How to respond#
Reply 2xx. The body is ignored. Retries: up to 3 (1 s, 2 s, 4 s).
Typical use: mark the conversation as handed to a human in your helpdesk, and stop any agent-side follow-up for this call_id.