James
11/21/2025, 10:48 PMVapi Support Bot
11/21/2025, 10:49 PM{{name}} can be set via assistantOverrides.variableValues in API requests, but setting or referencing these variables directly in the UI for the transferCall tool's operator message is not clearly supported. The API provides more flexibility for passing and using such variables.
To clarify: Are you currently triggering the transferCall action entirely through the Vapi dashboard UI, or are you able to use the API/SDK for more advanced variable handling? This will help determine if a workaround or API-based solution is possible for your use case.
Sources:
- [Vapi Dynamic Variables Documentation](https://docs.vapi.ai/assistants/dynamic-variables)
- [Vapi Call Forwarding & Warm Transfer](https://docs.vapi.ai/call-forwarding)James
11/21/2025, 10:53 PM_JOLT.
11/22/2025, 12:51 PMChiranjeet Mishra
11/25/2025, 10:39 PMcontextEngineeringPlan: "all" and setting the transfer assistant to generate the first message automatically.
---
Configuration Example
json
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+14155551234",
"transferPlan": {
"mode": "warm-transfer-experimental",
"contextEngineeringPlan": {
"type": "all"
},
"transferAssistant": {
"firstMessageMode": "assistant-speaks-first-with-model-generated-message",
"model": {
"provider": "openai",
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a transfer assistant. Use the full conversation history to introduce the caller to the agent. Include their title, full name, and purpose of the call. Example: 'Hi, Mr. John Smith is interested in a quote. I'm connecting you now.' Keep it brief and professional."
}
]
}
}
}
}
]
}
---_JOLT.
12/08/2025, 2:32 PM_JOLT.
12/08/2025, 2:33 PMChiranjeet Mishra
12/16/2025, 10:47 PMtransferCall tool UI.
With warm-transfer-experimental, the transfer assistant has its own model and prompt, and that’s where you reference variables like a customer ID. As long as assistantOverrides.variableValues.customerId is set when the call is created, the transfer assistant can use it.
Here’s a minimal example to illustrate the pattern:
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+1234567890",
"transferPlan": {
"mode": "warm-transfer-experimental",
"transferAssistant": {
"model": {
"provider": "openai",
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a transfer assistant. The customer ID for this call is {{customerId}}. When the operator answers, say: 'Hello, I have customer ID {{customerId}} on the line.'"
}
]
}
}
}
}
]
}
Key point:
- {{customerId}} must be provided via assistantOverrides.variableValues when starting the call
- The transfer assistant prompt is where that variable is consumed and spoken to the operatorHam
01/23/2026, 11:08 PMChiranjeet Mishra
01/27/2026, 10:13 PMwarm-transfer-experimental and found this information:
Only the raw transcript or message history is not passed to the operator. The operator will receive **one of the following only**:
• A spoken summary (if summaryPlan is enabled), or
• A custom spoken message (if transferPlan.message is set), or
• The default greeting
If you need the operator to have more context, the supported options are:
• Enable summaryPlan to generate a more comprehensive summary, or
• For SIP integrations, pass a summary via SIP headers using blind-transfer-add-summary-to-sip-header
Regarding callerId with warm-transfer-experimental — we’re still investigating this behavior. Please share a call ID where you’re seeing the issue and we’ll take a closer look on our side.Ham
01/29/2026, 7:39 PMChiranjeet Mishra
02/03/2026, 6:13 AMassistantOverride.variableValues in the system prompt, it will appear in {{messages}}, and therefore will be passed to the transfer assistant if you provide it the {{messages}} variable.Ham
02/05/2026, 2:35 PM"destinations": [
{
"type": "number",
"number": "+15555555555",
"callerId": "",
"description": "transfer destination for builders",
"transferPlan": {
"mode": "warm-transfer-experimental",
"sipVerb": "refer",
"transferAssistant": {
"model": {
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "## Purpose. This is the prompt for the warm transfer assistant, and variables do not work here, but you can instruct it to get info from the call transcript and repeat it."
}
],
"provider": "openai"
},
"firstMessageMode": "assistant-waits-for-user",
"maxDurationSeconds": 120,
"silenceTimeoutSeconds": 30
}
}
}