Alonso Breña
12/26/2025, 11:02 PMAI Evy
12/26/2025, 11:02 PMAI Evy
12/26/2025, 11:02 PMAI Evy
12/26/2025, 11:02 PMAI Evy
12/26/2025, 11:02 PMAlonso Breña
12/28/2025, 7:47 PMAI Evy
12/28/2025, 7:47 PMAI Evy
12/28/2025, 7:47 PMAI Evy
12/28/2025, 7:47 PMAI Evy
12/28/2025, 7:47 PMAI Evy
12/28/2025, 8:12 PMAlonso Breña
12/28/2025, 8:12 PMAI Evy
12/28/2025, 8:12 PMAI Evy
12/28/2025, 8:12 PMAI Evy
12/28/2025, 8:12 PMAlonso Breña
12/28/2025, 9:18 PMAlonso Breña
12/28/2025, 9:19 PMAI Evy
12/28/2025, 9:19 PMAI Evy
12/28/2025, 9:19 PM"test response") to confirm the function flow works at all.
- Check your server logs to confirm the request is being received and a valid response is being sent.
- Verify the response format is correct (status 200-299 with valid content) .
If the issue persists after checking these, it may require further investigation from the Retell team.AI Evy
12/28/2025, 9:19 PMAI Evy
12/28/2025, 9:19 PMAlonso Breña
12/28/2025, 10:10 PMAI Evy
12/28/2025, 10:10 PMAI Evy
12/28/2025, 10:10 PMmodel_temperature parameter when creating or updating your Retell LLM. [(2) ]() [(5) ]()AI Evy
12/28/2025, 10:10 PMAI Evy
12/28/2025, 10:10 PMAlonso Breña
12/29/2025, 12:12 AMAI Evy
12/29/2025, 12:12 AMAI Evy
12/29/2025, 12:12 AMAI Evy
12/29/2025, 12:13 AMAI Evy
12/29/2025, 12:13 AMAlonso Breña
01/02/2026, 10:31 PMAI Evy
01/02/2026, 10:31 PMAI Evy
01/02/2026, 10:31 PM{{current_time}} — returns current time in America/Los_Angeles timezone
- {{current_time_[timezone]}} — returns current time in a specified timezone (e.g., {{current_time_Australia/Sydney}} or {{current_time_America/New_York}}) [(1) ]() [(2) ]()
Example output: "Thursday, March 28, 2024 at 11:46:04 PM PST" [(1) ]()
For a 14-day calendar:
- {{current_calendar}} — 14-day calendar in America/Los_Angeles
- {{current_calendar_[timezone]}} — 14-day calendar in specified timezone
Usage:
Add the variable to your prompt, for example:
The current time is {{current_time_America/New_York}}.
Nested variables are also supported if you want to make the timezone dynamic:
{{current_time_{{my_timezone}} }}
If my_timezone is set to America/Los_Angeles, this evaluates to the actual time in that zone.
Tip: If you're in a non-US timezone (like Australia) , use the timezone-specific variable (e.g., {{current_time_Australia/Sydney}}) to avoid date/day mismatches. [(6) ]()AI Evy
01/02/2026, 10:31 PMAI Evy
01/02/2026, 10:31 PMAlonso Breña
01/03/2026, 2:19 AMAI Evy
01/03/2026, 2:19 AMAI Evy
01/03/2026, 2:20 AMAI Evy
01/03/2026, 2:20 AM{{variable_name}} syntax. [(1) ]()
The documentation describes how to set dynamic variables when initiating calls (via the retell_llm_dynamic_variables field in the Create Phone Call API) and how to configure default values at the agent level.
However, the sources I have do not explicitly document a method for altering dynamic variables mid-conversation within a Conversation Flow agent. The documentation focuses on setting these values before or at the start of a call, not modifying them dynamically during the conversation.
Possible workarounds to explore:
- Use custom functions to fetch or compute updated values and return them to the agent, which can then reference the new data in its responses.
- Use dynamic variables to pass captured data back to the main flow from Components. [(2) ]()
Check out these potentially useful sources:
- [Dynamic Variables]()
- [Components]()
- [Custom Function]()
Would you like a general answer based on my knowledge, or more details on using custom functions as a workaround?AI Evy
01/03/2026, 2:20 AMAlonso Breña
01/07/2026, 10:27 PMAI Evy
01/07/2026, 10:27 PMAI Evy
01/07/2026, 10:27 PMsip:sip.retellai.com
How it's used:
When using the "Dial to SIP URI" method, you call the [Register Phone Call API]() to get a call_id, then construct the SIP URI as:
sip:{call_id}@sip.retellai.com
Transport options:
- TCP (Recommended) : sip:sip.retellai.com;transport=tcp
- UDP: sip:sip.retellai.com;transport=udp
- TLS: sip:sip.retellai.com;transport=tls
For Elastic SIP Trunking (inbound calls) : You set Retell's SIP server address (sip:sip.retellai.com) as the origination SIP URI in your telephony provider's configuration. [(2) ]()AI Evy
01/07/2026, 10:27 PMAI Evy
01/07/2026, 10:27 PMAlonso Breña
01/07/2026, 10:49 PMAI Evy
01/07/2026, 10:49 PMAI Evy
01/07/2026, 10:49 PMsip:sip.retellai.com as the origination SIP URI in your telephony provider's settings (e.g., Twilio) . [(1) ]() [(2) ]()
For Termination URI (when importing a number to Retell) :
You should not include the sip: prefix. [(3) ]()
Per a support thread, when importing a number and entering the Termination URI, remove the sip: prefix—just use the URI without it.
Also check for:
- Any whitespace in the URI or phone number—remove it
- Ensure you're entering the correct field (termination vs. origination have different requirements)
If you're configuring Twilio's origination settings, the full sip:sip.retellai.com format is correct. [(2) ]()
If you're importing a number into Retell and entering a termination URI, try without the sip: prefix. [(3) ]()AI Evy
01/07/2026, 10:49 PMAI Evy
01/07/2026, 10:49 PMAlonso Breña
01/08/2026, 12:57 AMAI Evy
01/08/2026, 12:57 AMAI Evy
01/08/2026, 12:57 AMAI Evy
01/08/2026, 12:57 AMsip:sip.retellai.com) and transport options (TCP, UDP, TLS) without specifying port numbers.
Your telephony provider may use default SIP ports automatically. If you need the exact port, I'd recommend checking with your telephony provider's documentation or reaching out to Retell support directly:
- [Contact Sales]()
- [Retell AI GitHub]()
Would you like a general answer based on standard SIP conventions?AI Evy
01/08/2026, 12:57 AMAlonso Breña
01/11/2026, 6:48 PMAI Evy
01/11/2026, 6:48 PMAlonso Breña
01/11/2026, 6:48 PMAI Evy
01/11/2026, 6:49 PMAI Evy
01/11/2026, 6:49 PMAI Evy
01/11/2026, 6:49 PMAlonso Breña
01/11/2026, 6:50 PMAI Evy
01/11/2026, 6:50 PMAI Evy
01/11/2026, 6:50 PMAI Evy
01/11/2026, 6:50 PMAI Evy
01/11/2026, 6:50 PMAlonso Breña
01/11/2026, 10:00 PMAI Evy
01/11/2026, 10:00 PMAI Evy
01/11/2026, 10:00 PM7. Ask if user is interested in an in person tour.
- if yes, transition to schedule_tour.
- if no or hesitant, call function end_call to hang up politely and say will reach out if any other interesting properties pop up.
The transition logic is prompt-driven, so you can instruct the agent to transition to any state in your tree — including earlier states — by specifying the state name in your prompt instructions.
Example: If you want to allow returning to a previous state, add transition logic like:
- "If the user wants to change their answer, transition to previous_state_name."
Tip from community: If transitions aren't happening reliably, use strong phrasing in your prompt to ensure the transition is treated as a high-priority action. [(5) ]()AI Evy
01/11/2026, 10:00 PMAI Evy
01/11/2026, 10:00 PMAlonso Breña
01/11/2026, 10:02 PMAI Evy
01/11/2026, 10:02 PMAI Evy
01/11/2026, 10:02 PMid — unique identifier for the edge
- transition_condition — the condition that triggers the transition (can be prompt-based)
- destination_node_id — the node to transition to when the condition is met
Example from the API:
json
"edges": [
{
"id": "edge_1",
"transition_condition": {
"type": "prompt",
"prompt": "Customer wants to book appointment"
},
"destination_node_id": "book_appointment"
}
]
Transition types:
- Condition-based transitions — move to a specific node when a condition is met [(1) ]()
- Default fallback paths — handle cases when no conditions match
- Dynamic routing — based on conversation context
For Logic Split Nodes specifically:
Transition happens immediately when the agent enters this node. [(3) ]() There's always an else destination as a default if none of the conditions are met.
Debugging tips:
If transitions aren't working as expected, review your transition conditions to ensure they precisely match your intended triggers, or break down complex conditions into multiple simpler ones. [(4) ]()AI Evy
01/11/2026, 10:02 PMAI Evy
01/11/2026, 10:02 PMAlonso Breña
01/11/2026, 10:03 PMAlonso Breña
01/11/2026, 10:03 PMAI Evy
01/11/2026, 10:03 PMAI Evy
01/11/2026, 10:03 PMGlobal Node checkbox in the node settings.
- Any node type can be a global node — there's no restriction.
- You configure a condition for when the global node should be transitioned to. For example: When user indicates this is not a good time to talk.
- Whenever the user says something matching that condition (e.g., "I don't have time right now" or "I need to call back later") and the agent is performing a transition, the global node will be triggered.
- Since global nodes can be transitioned to from anywhere, they don't necessarily need to be connected to the rest of the graph.
Best practice guidance: [(2) ]()
- Use the global prompt for your agent's overall personality, tone, and universal rules.
- Use conversation flow nodes for step-by-step logic, questions, and transitions.
- Use global nodes only for actions available anytime (e.g., "transfer to human") .
Limitation: Retell AI currently does not support returning from a global node to the original conversation flow position. [(7) ]()AI Evy
01/11/2026, 10:03 PMAI Evy
01/11/2026, 10:03 PMAlonso Breña
01/11/2026, 10:16 PMAI Evy
01/11/2026, 10:16 PMAI Evy
01/11/2026, 10:16 PMend_call and functions you want to call multiple times across states. [(3) ]()
Use the general prompt for:
- Instructions that apply across all states
- Functions that should be available in every state (e.g., end_call)
- Overall agent personality, tone, and universal rules
When to use State Prompts (nodes in the tree) :
Each state in a multi-prompt agent includes a focused prompt with specific instructions for that conversation phase, and state-specific functions that are only relevant in that state. [(4) ]()
State functions are limited to that state specifically. [(3) ]()
Use state prompts for:
- Instructions specific to a particular conversation phase
- Functions that should only be available in that state
- Focused tasks like gathering specific information or handling a particular scenario
Example structure:
- State 1: Lead Qualification — Gather customer information, validate requirements (no appointment booking functions available) [(4) ]()
- State 2: Appointment Scheduling — Only accessible after qualification complete, booking functions enabled
Summary:
| Use General Prompt | Use State Prompt |
|---|---|
| Universal rules/tone | Phase-specific instructions |
| Functions nAI Evy
01/11/2026, 10:16 PMAI Evy
01/11/2026, 10:17 PMAI Evy
01/11/2026, 10:17 PMAlonso Breña
01/13/2026, 3:40 PMAI Evy
01/13/2026, 3:40 PMAI Evy
01/13/2026, 3:40 PMAI Evy
01/13/2026, 3:40 PMAI Evy
01/13/2026, 3:40 PMAlonso Breña
01/13/2026, 3:46 PMAI Evy
01/13/2026, 3:46 PMAI Evy
01/13/2026, 3:46 PMres.status(200) .json({...})
- In Python Flask: return jsonify({...}) , 200
If you're getting a 400 error (like in the Discord thread) , that indicates a bad request—often due to missing required fields or invalid data format. [(6) ]()AI Evy
01/13/2026, 3:46 PMAI Evy
01/13/2026, 3:46 PMAlonso Breña
01/19/2026, 5:38 PMAI Evy
01/19/2026, 5:38 PMAI Evy
01/19/2026, 5:38 PMAI Evy
01/19/2026, 5:38 PMAI Evy
01/19/2026, 5:38 PMAlonso Breña
01/19/2026, 5:53 PMAlonso Breña
01/19/2026, 5:54 PMAI Evy
01/19/2026, 5:54 PMAI Evy
01/19/2026, 5:54 PMagent_version parameter in your request body. [(1) ]()
Parameter details:
- agent_version (integer) — The version of the chat agent to use for the chat. If not provided, will default to latest version.
Example:
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const chatResponse = await client.chat.create({ agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD' }) ;
console.log(chatResponse.agent_id) ;
To specify a version, add agent_version to your request:
javascript
const chatResponse = await client.chat.create({
agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',
agent_version: 1
}) ;
To find available versions:
You can retrieve all versions of a chat agent using the Get Chat Agent Versions endpoint:
javascript
const chatAgentResponses = await client.chatAgent.getVersions('16b980523634a6dc504898cda492e939') ;
console.log(chatAgentResponses) ;
[(2) ]()
The response includes a version field for each version, along with is_published to indicate whether that version is published.AI Evy
01/19/2026, 5:54 PMAI Evy
01/19/2026, 5:54 PMAlonso Breña
01/19/2026, 6:05 PMAI Evy
01/19/2026, 6:05 PMAI Evy
01/19/2026, 6:05 PMpython
get_agent(version=2) # Gets the version with version number 2.
get_agent() # Gets the latest version of the agent.
How version numbers work:
- `0`: Initial version of the agent, first published version
- `1`: Second published version
- `2`: Current version (and so on)
To lock in a specific version for production:
1. Use the version parameter when creating calls to specify the exact published version number you want to use
2. Alternatively, attach a phone number to a specific published version via the "Phone Numbers" tab in the dashboard—if you select Draft, it will always fetch the latest version, so select a specific published version number instead
To find your published version numbers:
Use the Get Agent Versions endpoint to retrieve all versions and identify which ones are published (is_published: true) . [(2) ]()AI Evy
01/19/2026, 6:05 PMAI Evy
01/19/2026, 6:05 PM