Mistermanu#000
09/21/2025, 6:07 PMChiranjeet Mishra
09/21/2025, 6:07 PMVapi Support Bot
09/21/2025, 6:08 PMtransferCall function, update your configuration to include a transferPlan object. Here’s a sample for a warm transfer with summary:
json
{
"type": "transferCall",
"function": { "name": "transfer_call_tool" },
"destinations": [
{
"type": "number",
"number": "+1234567890",
"transferPlan": {
"mode": "warm-transfer-with-summary",
"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" }
]
}
}
}
]
}
Replace the number and summary content as needed. This will enable warm transfer with a call summary for the recipient before connecting the call.
Source:
- [Vapi documentation: call forwarding](https://docs.vapi.ai/call-forwarding)EMMANUEL
09/21/2025, 6:51 PMMistermanu#000
09/22/2025, 7:48 PMVapi Support Bot
09/22/2025, 7:49 PMtransferCall tool with an empty destinations array. This lets you provide the destination at runtime via a webhook. Example:
json
{
"type": "transferCall",
"function": { "name": "transfer_call_tool" },
"destinations": []
}
Set up your webhook to handle the transfer-destination-request event and return the desired number and transfer plan when needed.
[See dynamic transfer docs for details.](https://docs.vapi.ai/calls/call-dynamic-transfers)
Source:
- [Dynamic call transfers](https://docs.vapi.ai/calls/call-dynamic-transfers)Mistermanu#000
09/22/2025, 11:09 PMVapi Support Bot
09/22/2025, 11:10 PMdestinations array empty and handling the destination via a webhook. However, if the system is enforcing a required destination and not accepting an empty array, this may be a platform limitation or a recent change.
Actionable next step:
Add a placeholder destination (e.g., a dummy number) in your destinations array to pass validation, then override it at runtime in your webhook response. Example:
json
{
"type": "transferCall",
"function": { "name": "transfer_call_tool" },
"destinations": [
{ "type": "number", "number": "+10000000000" }
]
}
In your webhook, return the actual destination and transfer plan as needed.
If this workaround does not work, please contact Vapi support to clarify the current API requirements for dynamic transfers.
Reference: [Dynamic call transfers documentation](https://docs.vapi.ai/calls/call-dynamic-transfers)
Source:
- [Dynamic call transfers](https://docs.vapi.ai/calls/call-dynamic-transfers)Mistermanu#000
09/22/2025, 11:55 PMMistermanu#000
09/23/2025, 12:02 AMVapi Support Bot
09/23/2025, 12:04 AMMistermanu#000
09/23/2025, 12:20 AMVapi Support Bot
09/23/2025, 12:21 AMMistermanu#000
09/23/2025, 12:24 AMVapi Support Bot
09/23/2025, 12:25 AMMistermanu#000
09/23/2025, 1:06 AMVapi Support Bot
09/23/2025, 1:07 AMtransferCall tool with a placeholder destination, then handle the actual destination and transferPlan in your webhook. Example:
json
{
"type": "transferCall",
"function": { "name": "transfer_call_tool" },
"destinations": [
{ "type": "number", "number": "+10000000000" }
]
}
In your webhook (on transfer-destination-request), return the real number and desired transferPlan (e.g., warm-transfer-with-summary).
See [dynamic transfer docs](https://docs.vapi.ai/calls/call-dynamic-transfers) for the full webhook response format.
Source:
- [Dynamic call transfers](https://docs.vapi.ai/calls/call-dynamic-transfers)Mistermanu#000
09/23/2025, 3:07 AMVapi Support Bot
09/23/2025, 3:08 AMtransfer-destination-request event from Vapi at runtime?
If possible, could you confirm whether your webhook is being triggered and what response it returns? This will help determine if the problem is with the webhook setup or with how the transfer destination is being overridden.
Source:
- [Dynamic call transfers](https://docs.vapi.ai/calls/call-dynamic-transfers)