Warm Transfer Not Working
# support
r
No matter how I configure my assistant to complete a warm transfer it fails. The assistant itself works fine, takes incoming phone calls through a twilio number without issue. If I configured the transferCall tool to transfer to a phone number the call will fail with then assistant calls it. It fails at the twilio level with a 403 forbidden error. I changed the destination type to a sip trunk and the transfer itself works now but it is a cold transfer, no summary or message given. I have tried using the built in tools, creating a custom tool via API, cooking the tool directly into the assistant json and posting it that way via API and none of it works. I cannot get an answer as to what I am doing wrong. Would appreciate any assistance possible. Assistant ID - fb53ba31-c9ba-44b8-8dbc-2ad9f83d1f63 Call ID - 01999b1e-0305-7dda-a475-9ed8b34cbade
v
To resolve the 403 error and enable warm transfers with context on Twilio, ensure your
transferCall
tool is configured like this (replace the number with your destination):
Copy code
json
{
  "type": "transferCall",
  "destinations": [
    {
      "type": "number",
      "number": "+1234567890",
      "transferPlan": {
        "mode": "warm-transfer-experimental",
        "message": "Transferring a customer to you.",
        "holdAudioUrl": "https://api.twilio.com/cowbell.mp3",
        "fallbackPlan": {
          "message": "Could not transfer your call, goodbye.",
          "endCallEnabled": true
        }
      }
    }
  ]
}
Make sure your Twilio number is enabled for call transfers and the destination is valid. If you still get a 403, check Twilio's dashboard for permission or number restrictions. For more details, see the [Vapi call forwarding documentation](https://docs.vapi.ai/call-forwarding). Source: - [Call Forwarding](https://docs.vapi.ai/call-forwarding)
v
I’ve set up Twilio assistants with both cold and warm transfers, and the 403 error usually comes from call permissions or how the transfer leg is initiated. Since your SIP trunk cold transfer works, the missing piece is how the assistant passes call context for the warm handoff. I can help review your config and adjust the transferCall setup so the summary/whisper works properly. Are you currently setting a whisper or custom message in the transfer action, or just initiating a direct transfer? @Ryan
r
Hey @Vercel so this is my current config for warm transfer. I have simplified what I had been trying and just essentially copied what was in VAPI documentation in an attempt to get anything to work. I haven't had any luck as of yet. > "type": "transferCall", > "function": { > "name": "warmTransfer" > }, > "destinations": [ > { > "type": "sip", > "sipUri": "sip:+1XXXXXXXXXX@sip-name-outbound.pstn.twilio.com", > "transferPlan": { > "mode": "warm-transfer-with-summary", > "sipVerb": "refer", > "summaryPlan": { > "enabled": true, > "messages": [ > { > "role": "system", > "content": "Please provide a summary of the call." > }, > { > "role": "user", > "content": "Here is the transcript:\n\n{{transcript}}\n\n" > } > ] > } > } > } > ] I have tried warm transfer, warm transfer with summary, warm transfer experimental and none of them have worked. The assistant will call this tool coorectly and transfer the call to the operator but there is no summary. I can't even get it to just say a simple message before transfering the call
v
Alright @Ryan I see what you’re aiming for, a true warm handoff where the assistant delivers a spoken summary before bridging. The issue looks less about your JSON and more about how Twilio handles the pre-bridge audio on SIP, which I’ve debugged before. I can help you test a whisper-only setup and, if needed, implement a two-step bridge so the operator always hears context. Let’s discuss privately and I’ll assist you through the fix.
r
@Vercel sent a DM
r
@MakerO @Ryan did you two get this working? I'm having the same problem
2 Views