Dev
10/21/2025, 7:02 PMVapi Support Bot
10/21/2025, 7:03 PMcontent field in your control URL request. Here’s an example:
json
{
"type": "transfer",
"destination": {
"type": "number",
"number": "+1234567890"
},
"content": "Transferring your call now. Custom info: Order #12345"
}
Note: Only documented fields like content are supported for passing custom data in this way.
For more details, see the [Vapi call control documentation](https://docs.vapi.ai/calls/call-features).
Source:
- [Vapi call control documentation](https://docs.vapi.ai/calls/call-features)Chiranjeet Mishra
10/21/2025, 7:19 PMtransferCompleteAudioUrl property in TransferPlan while in warm-transfer-experimental mode, you can specify a custom audio file URL to play after the transfer is complete. Here's an example of how to configure it:
json
{
"type": "transferCall",
"function": {
"name": "salesTransferAssistant"
},
"destinations": [
{
"type": "number",
"number": "+14155551234",
"transferPlan": {
"mode": "warm-transfer-experimental",
"transferCompleteAudioUrl": "https://your-audio-file-url.com/complete_sound.mp3",
"transferAssistant": {
"firstMessage": "Hello, I have a customer on the line. Are you available to take this call?",
"firstMessageMode": "assistant-speaks-first",
"maxDurationSeconds": 120,
"silenceTimeoutSeconds": 30,
"model": {
"provider": "openai",
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a transfer assistant designed to facilitate call transfers between a customer and an operator."
}
]
}
}
}
}
],
"messages": [
{
"type": "request-start",
"content": "I'll transfer you to our sales team. Please hold for a moment."
}
]
}
This configuration will handle a transfer to a specific number and play your custom audio file once the transfer is complete. You can find more information on configuring warm transfers [here](https://docs.vapi.ai/calls/assistant-based-warm-transfer).Dev
10/21/2025, 7:26 PMDev
10/21/2025, 7:29 PMDev
10/22/2025, 6:42 AMDev
10/22/2025, 6:44 AMDev
10/22/2025, 11:51 AMVapi Support Bot
10/22/2025, 11:53 AMcontent or message will be delivered audibly to the recipient.
If you need to associate custom data with a transfer, consider storing it in your own backend and referencing it by call/session ID, as there is no built-in silent metadata field in the transfer payload.
For reference, here is the documented transfer payload (note: content will be spoken):
json
{
"type": "transfer",
"destination": { "type": "number", "number": "+1234567890" },
"content": "Transferring your call now."
}
See [Vapi call control documentation](https://docs.vapi.ai/calls/call-features) for details.
Sources:
- [Vapi call control documentation](https://docs.vapi.ai/calls/call-features)
- [Vapi call forwarding documentation](https://docs.vapi.ai/call-forwarding)Chiranjeet Mishra
10/24/2025, 6:11 PMDev
10/28/2025, 11:15 AMChiranjeet Mishra
10/31/2025, 12:06 AMendedReason: "assistant-forwarded-call" in the response.
2. Check SIP REFER Configuration For SIP trunks, you need to:
- Ensure your SIP provider has SIP REFER enabled
- Use the correct SIP URI format for transfers
Example correct configuration:
{
"type": "transferCall",
"destinations": [
{
"type": "sip",
"sipUri": "sip:14039932200@sip.telnyx.com"
}
]
}
3. Verify Transfer Format:
- Make sure phone numbers are formatted in E.164 format (e.g., sip:+15557654321@sip.domain.com)
- The transfer URI should include your SIP provider's domain
If the issue persists after checking these, I recommend:
1. Analyzing your telephony provider logs for transfer failures
2. Checking SIP packet captures for REFER messages
3. Verifying your SIP trunk configuration matches provider requirementsv