optimystic
02/11/2026, 5:52 PMAI Evy
02/11/2026, 5:52 PMAI Evy
02/11/2026, 5:53 PMdial_busy — The number dialed is busy [(2) ]()
- telephony_provider_permission_denied — SIP trunk credentials are not authenticated
- telephony_provider_unavailable — The telephony provider is unavailable
- sip_routing_error — SIP routing is going over too many hops or is in a loop
Troubleshooting steps:
1. Check the call history and detailed log in your Retell dashboard—it contains the disconnection reason, SIP error code, and error message [(3) ]()
2. Verify your phone number has an inbound_agent_id properly set (if null, the number won't accept inbound calls) [(4) ]()
3. If using custom telephony (SIP trunking) :
- Double check your configuration and ensure you imported the correct information [(3) ]()
- If configuration is incorrect, delete the imported number and re-import
- Check with your telephony provider to see what error they're seeing on their side
4. Check if you have an inbound webhook configured—a failing webhook can prevent calls from starting [(5) ]()
**If using RAI Evy
02/11/2026, 5:53 PMAI Evy
02/11/2026, 5:53 PMAI Evy
02/11/2026, 5:53 PMoptimystic
02/11/2026, 6:07 PMoptimystic
02/11/2026, 6:08 PMAI Evy
02/11/2026, 6:08 PMAI Evy
02/11/2026, 6:08 PMjson
{
"event": "call_ended",
"call": {
"call_type": "phone_call",
"from_number": "+12137771234",
"to_number": "+12137771235",
"direction": "inbound",
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"call_status": "registered",
"metadata": {},
"retell_llm_dynamic_variables": {
"customer_name": "John Doe"
},
"start_timestamp": 1714608475945,
"end_timestamp": 1714608491736,
"disconnection_reason": "user_hangup",
"transcript": "...",
"transcript_object": [ [Object], [Object], [Object], [Object] ],
"transcript_with_tool_calls": [ [Object], [Object], [Object], [Object] ],
"opt_out_sensitive_data_storage": false
}
}
[(1) ]()
Key things to know:
- The webhook sends three event types: call_started, call_ended, and call_analyzed
- Each webhook POST contains an event field indicating the event type, plus a call object with the call details
- Your endpoint should return a 2xx status code to acknowledge receipt—no response body is expected
Important note about calls that don't connect: If a call doesn't connect (like dial_failed, dial_no_answer, dial_busy) , the call_started webhook will not be triggered, but call_ended and call_analyzed will still fire
For your Latenode setup, make sure your workflow can handle all three event types. A common issue is that platforms like Make/Zapier stop processing after the first webhook hit (call_started) , so you may need to configure it to continue listening for subsequent events [(2) ]()AI Evy
02/11/2026, 6:08 PMAI Evy
02/11/2026, 6:08 PMoptimystic
02/11/2026, 6:34 PMAI Evy
02/11/2026, 6:34 PMAI Evy
02/11/2026, 6:34 PMText, Number, Enum, or Boolean
- Enum Options – Options to choose from (only when type is enum)
Important note from the community: When using extracted dynamic variables in custom functions, reference the variable name directly like {{make}} rather than using dot notation like {{scheduling_info_extraction.make}}. [(2) ]()
The node needs to be placed in your conversation flow where the relevant information has already been spoken/collected during the conversation—it pulls from the conversation history up to that point.AI Evy
02/11/2026, 6:34 PMAI Evy
02/11/2026, 6:34 PMoptimystic
02/11/2026, 7:28 PMAI Evy
02/11/2026, 7:28 PMAI Evy
02/11/2026, 7:28 PMcollected_dynamic_variables in the call data [(3) ]() [(4) ]()
Removing unwanted columns:
- In Call History, use Customize View to reorder or hide columns you don't need [(1) ]() [(2) ]()
- The questions you're seeing ("Do you currently have a steady place to live?" etc.) appear to be Post-Call Analysis fields—check your agent's Post-Call Analysis settings to remove or modify them
To see your extracted variables:
- Enable the collected_dynamic_variables field in your Call History view—this contains variables extracted during the call [(3) ]() [(4) ]()
The Call History customization feature allows you to add custom fields for deeper tracking and reorder columns to match your workflow [(1) ]() [(2) ]() .AI Evy
02/11/2026, 7:28 PMAI Evy
02/11/2026, 7:28 PMoptimystic
02/11/2026, 7:43 PMAI Evy
02/11/2026, 7:43 PMAI Evy
02/11/2026, 7:43 PM/settings/webhooks works for chat/SMS conversations without calls.
However, there are some relevant details:
For inbound SMS, the inbound webhook does support SMS—the documentation mentions chat_inbound as an alternative to call_inbound in the response structure. [(1) ]()
For example, the inbound webhook response for SMS uses chat_inbound instead of `call_inbound`:
json
{
"chat_inbound": {
"override_agent_id": "agent_12345",
"dynamic_variables": {
"customer_name": "John Doe"
}
}
}
For post-call analysis webhooks, the call_analyzed event type is specifically documented for calls. [(2) ]()
I don't have explicit documentation confirming whether the general webhook at /settings/webhooks fires events for standalone chat/SMS conversations (without an associated call) . You may want to test this directly or check with Retell support for clarification on chat-specific webhook events.
Check out these potentially useful sources:
- [Inbound webhook]()
- [Send & receive SMS]()
Would you like me to try to answer more generally based on my knowledge?AI Evy
02/11/2026, 7:43 PMAI Evy
02/11/2026, 7:43 PMoptimystic
02/11/2026, 7:50 PMAI Evy
02/11/2026, 7:50 PMAI Evy
02/11/2026, 7:50 PMdata_storage_setting is configured to capture data. Available options include everything, everything_except_pii, or basic_attributes_only. [(2) ]()
3. Add the webhook to settings
A community member reported a similar issue where chats weren't appearing in history. The fix was adding the agent-level webhook to the webhook tab in settings—after doing so, all the chats appeared. [(3) ]()
4. Use the API to verify
You can also retrieve chat details programmatically using the Get Chat API or List Chat API to confirm whether sessions are being created. [(4) ]()
If the /list-chat API endpoint returns an empty array, chat sessions aren't being created at all, which points to a configuration issue at the session creation level. [(3) ]()AI Evy
02/11/2026, 7:50 PMAI Evy
02/11/2026, 7:50 PMoptimystic
02/11/2026, 8:05 PMoptimystic
02/11/2026, 8:06 PMAI Evy
02/11/2026, 8:06 PMAI Evy
02/11/2026, 8:06 PM/list-chat endpoint, it's not necessarily related to your end node configuration. [(1) ]()
Key things to check:
1. Verify the chat session was created properly — A chat session needs to be created via the create-chat API endpoint first, which returns a chat_id for subsequent requests. [(2) ]()
2. Check chat status — Chats have three possible statuses: ongoing, ended, or error. [(3) ]() If the chat is still ongoing, it should still appear in the list. If it shows error, the session may have encountered issues.
3. Data storage settings — A community member reported a similar issue where chat sessions weren't appearing. The resolution involved verifying the data_storage_setting configuration on the agent. [(4) ]()
4. Use the API to verify — You can retrieve chat details programmatically using the Get Chat API or List Chat API to confirm whether sessions exist. [(5) ]()
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const chatResponses = await client.chat.list() ;
console.log(chatResponses) ;
[(6) ]()
If the list returns an empty array even though you completed a chat, the issue is likely at the session creation level rather than the ending node. The chat session may not have been properly initiated with the create-chat endpoint. [(2) ]()AI Evy
02/11/2026, 8:06 PMAI Evy
02/11/2026, 8:06 PMoptimystic
02/11/2026, 8:14 PMAI Evy
02/11/2026, 8:14 PMAI Evy
02/11/2026, 8:14 PMagent_id in your curl command to create a chat session.
You can verify you have a chat agent by using the Get Chat Agent API endpoint—if you pass a voice agent ID to this endpoint, you'll get an "Invalid agent channel" error. [(2) ]()AI Evy
02/11/2026, 8:14 PMAI Evy
02/11/2026, 8:14 PMoptimystic
02/11/2026, 8:24 PMAI Evy
02/11/2026, 8:24 PMAI Evy
02/11/2026, 8:24 PMdata_storage_setting configuration.
Key troubleshooting steps:
1. Check data storage settings — Navigate to your agent's Security & Fallback Settings → Data Storage Settings and ensure it's set to "everything" or "everything_except_pii" to capture chat interactions.
2. Verify via API — Use the List Chat API to confirm whether the session was recorded:
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const chatResponses = await client.chat.list() ;
console.log(chatResponses) ;
[(3) ]()
3. Note on chat agents — A community member flagged that chat agents may not have the same data storage configuration options as voice agents. [(2) ]() If you don't see data storage settings for your chat agent, this may require Retell support to investigate.
If the API also returns no results, I'd recommend reaching out to Retell support with your agent ID for further investigation.AI Evy
02/11/2026, 8:24 PMAI Evy
02/11/2026, 8:24 PMoptimystic
02/11/2026, 8:27 PMAI Evy
02/11/2026, 8:27 PMAI Evy
02/11/2026, 8:27 PMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const chatAgentResponse = await client.chatAgent.create({
response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },
}) ;
[(2) ]()
You can set data_storage_setting when creating or updating a chat agent with these options: [(1) ]() [(2) ]() [(3) ]()
- everything — stores all data including transcripts and recordings
- everything_except_pii — stores data but excludes PII when possible
- basic_attributes_only — stores only basic metadata
A community member reported this exact issue—chat agents missing data storage configuration in the dashboard. [(4) ]() If you're unable to configure this via API, I'd recommend reaching out to Retell support with your agent ID, as they may need to investigate further.AI Evy
02/11/2026, 8:27 PMAI Evy
02/11/2026, 8:27 PMoptimystic
02/11/2026, 8:33 PMAI Evy
02/11/2026, 8:33 PMAI Evy
02/11/2026, 8:33 PMAI Evy
02/11/2026, 8:33 PMAI Evy
02/11/2026, 8:33 PMoptimystic
02/11/2026, 10:14 PMAI Evy
02/11/2026, 10:14 PMAI Evy
02/11/2026, 10:14 PMPrompt or Static Sentence for this. This ensures the agent speaks the message and then the call ends.
If you need a brief pause before hanging up:
A community member reported a similar issue where the call ended too abruptly. The solution is to create a Conversation Node with Skip Response enabled before your End Node: [(2) ]()
1. Create a Conversation Node before your End Node
2. Put your farewell message in this node
3. Enable Skip Response in the node settings
4. Connect this node directly to your End Node
This allows the farewell message to fully play before the call terminates.AI Evy
02/11/2026, 10:14 PMAI Evy
02/11/2026, 10:14 PMAI Evy
02/11/2026, 10:28 PMoptimystic
02/11/2026, 10:28 PMAI Evy
02/11/2026, 10:28 PMcollected_dynamic_variables in the call response. [(1) ]() [(2) ]()
2. Post-Call Analysis fields — These are analyzed after the call ends and appear in call_analysis.custom_analysis_data. [(2) ]() [(3) ]()
To display them in Call History:
For collected dynamic variables, add collected_dynamic_variables as a custom attribute—the individual variables will be nested inside this object. [(1) ]() [(2) ]()
For Post-Call Analysis fields (like your has_a_project, looking_to_buy, etc.) , these should appear under the call_analysis section. The custom fields you define appear in custom_analysis_data. [(2) ]() [(3) ]()
Important note: Post-call analysis fields will not populate for calls that were not connected or where no conversation took place. [(4) ]() Check whether the field exists before relying on it.
Troubleshooting steps:
1. Verify your calls actually completed with conversation—post-call analysis only runs on connected calls with actual dialogue
2. Use the Get Call API to inspect a specific call and confirm where your data is appearing:AI Evy
02/11/2026, 10:28 PMAI Evy
02/11/2026, 10:28 PMjavascript
const callResponse = await client.call.retrieve('your_call_id') ;
console.log(callResponse.collected_dynamic_variables) ;
console.log(callResponse.call_analysis) ;
[(2) ]()
3. In Call History customization, try adding call_analysis as a custom attribute to see if your post-call fields appear there
If the data appears in the API response but not in the dashboard columns, this may be a UI limitation worth raising with Retell support.AI Evy
02/11/2026, 10:28 PMoptimystic
02/11/2026, 10:36 PMAI Evy
02/11/2026, 10:36 PMAI Evy
02/11/2026, 10:37 PMenable_voicemail_detection: true) , the system may attempt to detect voicemail before timing out. [(2) ]() [(3) ]()
- The call would likely show as "not connected" in your call history, and post-call analysis fields would not populate for calls that were not connected or where no conversation took place. [(4) ]()
To investigate a specific failed call:
- Check the call status and disconnection reason in your Retell dashboard
- Use the Get Call API to retrieve detailed call information including any error codes
For specific behavior on disconnected numbers, I'd recommend testing with a known disconnected number and reviewing the call details, or reaching out to Retell support for clarification.
Check out these potentially useful sources:
- [Documentation]()
- [Hire certified Retell partner]()
Would you like me to try to answer more generally based on my knowledge?AI Evy
02/11/2026, 10:37 PMAI Evy
02/11/2026, 10:37 PMoptimystic
02/11/2026, 10:38 PMAI Evy
02/11/2026, 10:38 PMAI Evy
02/11/2026, 10:39 PMHi, this is {{your name}}, please give us a callback tomorrow at 10am.
- **Prompt**: The agent will leave a message generated dynamically based on instructions you provide, like summarize the call and ask user to call back
Via API, you can configure this using the voicemail_option parameter: [(2) ]()
json
{
"action": {
"type": "static_text",
"text": "Please give us a callback tomorrow at 10am."
}
}
Important notes:
- Voicemail detection runs continuously within the first 3 minutes of the call [(1) ]()
- If you select to leave a message, the system will wait for its turn to speak to leave that message
- The voicemail detection acts globally—you can rely on the built-in detection rather than creating custom transitions in your conversation flow [(3) ]()
- If voicemail is detected and the action is taken successfully, the call will have a disconnection reason of voicemail_reached [(1) ]()AI Evy
02/11/2026, 10:39 PMAI Evy
02/11/2026, 10:39 PMAI Evy
02/13/2026, 7:45 PMoptimystic
02/13/2026, 7:45 PMAI Evy
02/13/2026, 7:46 PMAI Evy
02/13/2026, 7:46 PMdisconnection_reason values that indicate why they failed: [(3) ]() [(4) ]()
- dial_busy — Line was busy
- dial_failed — Call failed to connect
- dial_no_answer — No answer
- invalid_destination — Number is malformed or unreachable
4. Export call history — Use the export feature in Call History to download results with your selected filters and column settings. [(4) ]() You can filter for unsuccessful sessions to identify patterns in failure reasons. [(5) ]()
5. Use the API for programmatic access — Retrieve call details via the List Calls or Get Call API to programmatically identify which numbers had connection failures, then update your client list accordingly.
Tip: Numbers returning invalid_destination or dial_failed consistently are likely disconnected and should be flagged for removal or verification.AI Evy
02/13/2026, 7:46 PMoptimystic
02/13/2026, 8:17 PMAI Evy
02/13/2026, 8:17 PMAI Evy
02/13/2026, 8:17 PMAI Evy
02/13/2026, 8:17 PMAI Evy
02/13/2026, 8:17 PMPrompt and Static Sentence.
Steps to fix:
1. Click on your End Node
2. In the node settings on the right, enable Speak During Execution
3. Enter your farewell message there
4. The agent will now speak this message before the call terminates
Alternative approach:
If you need more control, add a Conversation Node with Skip Response enabled before your End Node. [(2) ]() Put your farewell message in that node, enable Skip Response in the node settings (which means the agent will speak and then automatically transition to the next node without waiting for user input) , then connect it to your End Node.optimystic
02/13/2026, 8:23 PMAI Evy
02/13/2026, 8:23 PMAI Evy
02/13/2026, 8:23 PMAI Evy
02/13/2026, 8:23 PMAI Evy
02/13/2026, 8:23 PMoptimystic
02/13/2026, 8:26 PMAI Evy
02/13/2026, 8:26 PMAI Evy
02/13/2026, 8:26 PMAI Evy
02/13/2026, 8:27 PMAI Evy
02/13/2026, 8:27 PMoptimystic
02/13/2026, 8:30 PMAI Evy
02/13/2026, 8:30 PMAI Evy
02/13/2026, 8:31 PMAI Evy
02/13/2026, 8:31 PMAI Evy
02/13/2026, 8:31 PMoptimystic
02/17/2026, 7:43 PMAI Evy
02/17/2026, 7:43 PMAI Evy
02/17/2026, 7:43 PMcall_status shows ended rather than registered or ongoing. [(2) ]() [(3) ]()
2. Call connection — If calls didn't actually connect (e.g., dial_failed, dial_no_answer) , there would be no transcript or recording to store.
3. Per-call override — The data_storage_setting can also be set per-call, which would override the agent setting. [(4) ]()
A community member reported a similar issue where sessions weren't appearing in history, and verifying the data_storage_setting resolved it. [(5) ]()AI Evy
02/17/2026, 7:43 PMAI Evy
02/17/2026, 7:43 PMoptimystic
02/17/2026, 7:54 PMAI Evy
02/17/2026, 7:54 PMAI Evy
02/17/2026, 7:54 PMAI Evy
02/17/2026, 7:54 PMAI Evy
02/17/2026, 7:54 PMAI Evy
02/17/2026, 7:54 PMoptimystic
02/18/2026, 9:01 PMAI Evy
02/18/2026, 9:01 PMAI Evy
02/18/2026, 9:02 PMcall_time_window parameter allows you to specify your timezone explicitly. [(1) ]()
How timezone works:
The call_time_window object includes a timezone field where you define the specific timezone for your calling windows. Each window is a half-open interval [startMin, endMin) in minutes since 00:00 local time based on the timezone you specify.
In the dashboard:
When configuring batch calls via the UI, you can open the configuration modal to define the batch call time windows, which includes setting your timezone. [(2) ]()
Key points:
- You must explicitly set your timezone in the call_time_window configuration
- The system does not assume a default timezone—you specify it (e.g., America/Los_Angeles, America/New_York, etc.)
- Cross-midnight windows are NOT allowed (must satisfy startMin < endMin) [(1) ]()
- endMin = 1440 (24:00) is valid
If you're scheduling via the trigger_timestamp parameter without a call_time_window, that timestamp is represented as a Unix timestamp in milliseconds, which is timezone-agnostic (UTC-based) .AI Evy
02/18/2026, 9:02 PMAI Evy
02/18/2026, 9:02 PMoptimystic
02/18/2026, 9:36 PMAI Evy
02/18/2026, 9:36 PMAI Evy
02/18/2026, 9:37 PMallowed_outbound_country_list doesn't include the country you're trying to call. [(1) ]()
How to fix it:
1. Navigate to Phone Numbers in your Retell dashboard
2. Click on the phone number you're using for batch calls
3. Under Allowed Outbound Countries, add the countries you need to call
Changes are saved automatically.
Via API, you can update this using:
curl -X PATCH "<https://api.retellai.com/update-phone-number/+14155551234%22> \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"allowed_outbound_country_list": ["US", "CA"]
}'
Use ISO 3166-1 alpha-2 country codes (e.g., "US" for United States, "CA" for Canada) .
Quick workaround: One community member resolved a similar issue by temporarily setting all countries as allowed, which worked immediately. [(2) ]()
Important: If allowed_outbound_country_list is null or empty, calls to all countries are allowed by default. [(3) ]() However, if it contains a specific list and your destination country isn't included, you'll get this error. [(4) ]()
Also verify your phone numbers in the CSV are in proper E.164 format (+1XXXXXXXXXX for US) with no dashes or spaces.AI Evy
02/18/2026, 9:37 PMAI Evy
02/18/2026, 9:37 PMoptimystic
02/18/2026, 9:44 PMAI Evy
02/18/2026, 9:44 PMAI Evy
02/18/2026, 9:44 PM+13456805080 has country code +1345, which is the *Cayman Islands (KY) *, not the United States. [(2) ]() While it starts with +1, the 345 area code belongs to the Cayman Islands.
Why your settings didn't help:
Your allowed_outbound_country_list controls which countries you're allowed to call, but this error suggests the Cayman Islands may not be supported by Retell's telephony providers at all—regardless of your allowlist configuration.
What to check:
1. Verify the destination numbers in your batch call CSV are actually US numbers (area codes like 201, 212, 415, etc.) rather than Caribbean nations that share the +1 country code
2. Common +1 country codes that are NOT US:
- +1345 = Cayman Islands (KY)
- +1876 = Jamaica
- +1246 = Barbados
- +1809/829/849 = Dominican Republic
Next steps:
If you need to call Cayman Islands numbers specifically, this may require contacting Retell support to confirm whether KY is a supported destination. For your batch calls to US numbers, ensure none of your CSV entries accidentally contain Caribbean area codes.AI Evy
02/18/2026, 9:44 PMAI Evy
02/18/2026, 9:44 PM