Configure assistant-based warm transfer
Assistant-based warm transfer places the customer on hold while a transfer assistant calls the destination. The transfer assistant can give the operator context, confirm that a person is ready, and then complete or cancel the transfer.
Use this mode when the destination must accept the call or receive context before speaking with the customer. For a direct transfer without an operator conversation, use the Transfer Call tool with its default blind-transfer mode.
GPT-Live assistants cannot use assistant-based warm transfer. GPT-Live supports only blind transfers, and only on Twilio and Vapi SIP calls. See GPT-Live compatibility for the full list of supported and unsupported features.
Prerequisites
Before you configure the transfer, prepare:
- A Vapi assistant that handles phone calls on a Twilio number, a Vapi number, or a bring-your-own SIP trunk. On other phone providers, the call is transferred without the transfer assistant.
- A destination phone number in E.164 format, for example,
+14155550100 - A private Vapi API key for the curl method
- A publicly accessible MP3 or WAV file if you want custom hold or completion audio
How assistant-based warm transfer works
When the original assistant invokes the transfer call tool:
- The customer hears the configured transfer message and is placed on hold.
- Vapi calls the destination and starts the transfer assistant.
- The transfer assistant speaks with the operator and uses the previous conversation as context by default.
- The transfer assistant calls
transferSuccessfulto connect the parties ortransferCancelto return the customer to the original assistant. - With
transferAssistantconfigured, a busy or unanswered destination rolls back to the configured fallback. The transfer assistant can also cancel when an operator declines or it reaches voicemail or an automated system. A transfer that doesn’t finish withintransferAssistant.maxDurationSeconds(120 seconds by default) rolls back.
The transferSuccessful and transferCancel tools are always available to the transfer assistant. You can customize them through the API, but you do not need to add them to a basic configuration.
Configure the warm transfer
Create a reusable transfer call tool, configure a phone-number destination, and add the tool to the original assistant.
Dashboard
curl
Create a transfer call tool
In the Vapi Dashboard, open Tools, click Create Tool, and select Transfer Call. Enter a name and a description that state when the assistant should use the tool.
Add a phone-number destination
Under Destinations, click Add Destination, then select Phone Number. Enter the destination in E.164 format and describe when the assistant should select it.
Select assistant-based warm transfer
Expand Transfer Plan. Under Transfer Mode, select Warm Transfer - Experimental.
The Dashboard exposes the transfer mode, operator message, fallback plan, and summary plan. Use the API to configure a custom transfer-assistant model, prompt, timeouts, voice, hold audio, or completion audio.
Configure transfer behavior
Use these fields to control the transfer assistant and the two call legs. See the Create Tool API reference for complete field definitions and configuration options.
firstMessageMode also accepts assistant-waits-for-user and assistant-speaks-first-with-model-generated-message. Use the model-generated option when the introduction should adapt to the preceding conversation.
Prompt the transfer assistant
Keep the transfer assistant’s system message focused on the operator conversation. Define when to use each built-in tool:
- Call
transferSuccessfulafter a human operator confirms that they will take the call - Call
transferCancelwhen it hears voicemail, an interactive voice response (IVR) system, an automated hold queue, or an operator declining the call - Answer questions about the transfer or give a brief customer summary
- Avoid unrelated conversation and complete the decision before
maxDurationSeconds
For example:
Busy and no-answer call statuses can trigger rollback before the transfer assistant speaks. The transfer assistant receives the previous conversation by default. Set contextEngineeringPlan.type to none when the operator must not receive that context, or use lastNMessages to limit it.
When you configure the transfer through the API, set fallbackPlan.endCallEnabled. With false, the original assistant says the fallback message and continues the conversation. With true, it says the message and ends the call. If omitted, the caller stays on the call with the original assistant.
Keep transferPlan.transferAssistant configured when you depend on no-answer fallback or a transfer timeout. In the Dashboard, turning off Summary generation can remove that configuration and prevent a no-answer event from starting the fallback. Keep Summary generation on or configure transferAssistant through the API, then verify the result with a controlled call.
Verify the warm transfer
Place a test call and trigger the transfer. Confirm that:
- The customer hears the transfer message and hold audio.
- The destination receives the call and hears the transfer assistant.
- Accepting the call connects the customer and operator.
- Declining the call or reaching voicemail returns the customer to the original assistant or ends the call according to
fallbackPlan.
In Logs → Calls, inspect the original call, any available destination-leg record, transcript, and ended reason. To retrieve call details through the API, see the Get Call API reference. An assistant-forwarded-call ended reason alone does not confirm that the destination answered.
Assistant-based warm transfers to phone or SIP destinations do not send transfer-update, including when the call switches to the transfer assistant and back. A status-update event with status: "forwarding" signals that the transfer started, not that it succeeded. See transfer event behavior for payloads and subscription requirements.
Troubleshooting
Check the affected call’s Logs tab in Logs → Calls for validation and transfer errors. If Vapi initiated the transfer but the destination never rings, inspect the telephony provider’s call detail records and follow Troubleshoot call transfers.
API reference
The Create Tool API reference documents transfer destinations and transfer-plan fields. This guide shows the additional transfer-assistant configuration used with warm-transfer-experimental.