Vako-SV
01/20/2026, 6:53 AMAI Evy
01/20/2026, 6:53 AMAI Evy
01/20/2026, 6:53 AMtelephony_provider_permission_denied error is an issue *on your side (the originating/from number side) *, not the destination side. [(1) ]() , [(2) ]()
This disconnection reason represents cases where the SIP trunk authentication failed.
## Common causes and troubleshooting steps:
1. Incorrect SIP trunk credentials - Double-check that you provided the correct username and password when importing the number to Retell. [(3) ]()
2. Verify your configuration - Make sure you imported the right termination URI, username, and password. The username is different from the friendly name. , [(4) ]()
3. Check your termination settings - Verify your termination setting in your SIP trunking provider. [(3) ]()
4. Re-import if needed - If the configuration is incorrect, delete the imported number and re-import with the correct details.
5. Check provider logs - Review the logs in your telephony provider (Twilio, Telnyx, etc.) to see what error they report on their side.
If you're using Twilio, ensure the termination SIP URI is correct and has no spaces, and that credentials match exactly. [(4) ]()AI Evy
01/20/2026, 6:54 AMAI Evy
01/20/2026, 6:54 AMVako-SV
01/20/2026, 7:30 AMVako-SV
01/20/2026, 7:30 AMAI Evy
01/20/2026, 7:30 AMAI Evy
01/20/2026, 7:30 AMtelephony_provider_permission_denied error only occurs when calling certain numbers (like specific countries) while other calls work fine, this is likely a geographic permissions issue on your telephony provider's side rather than a general authentication problem.
## Steps to troubleshoot:
1. Check geographic permissions - In your telephony provider (e.g., Twilio) , ensure geographic permissions are enabled for the countries/regions you're trying to call. Search for "geo" or "Voice Geographic Permissions" in your provider's settings.
[(1) ]()
2. Use a localized termination URI - If you're calling international numbers, try using a localized termination URI near your target region (e.g., Dublin or Frankfurt for UK calls) .
[(2) ]()
3. Verify route configuration with your provider - A similar issue was reported where calls worked from a softphone but failed through Retell for certain destinations. The provider responded with "503 Destination is unreachable" even though the trunk worked for other calls. In that case, the provider needed to check and test the specific route.
[(3) ]()
4. Check call history and detailed logs - Review the SIP error code and error message in the call detailed log for the specific failed calls, as this can help identify the root cause.
[(4) ]()
If the issue persists, open a ticket with your telephony provider to investigate why specific destinations are failing while others succeed.AI Evy
01/20/2026, 7:30 AMAI Evy
01/20/2026, 7:30 AMVako-SV
01/20/2026, 11:41 AMAI Evy
01/20/2026, 11:41 AMAI Evy
01/20/2026, 11:41 AMfrom and P-Asserted-Identity headers to the user's number.
[(2) ]() , [(3) ]()
The issue you're experiencing is that Twilio enforces caller ID restrictions—you cannot use arbitrary numbers as caller ID; the number must be a Twilio number you own or a number you have verified with Twilio.
[(1) ]()
## Does Retell Support Diversion or Remote-Party-ID Headers?
Based on the available documentation, there is no mention of Retell supporting the Diversion header or Remote-Party-ID header as alternatives to the From header for caller ID presentation. The documentation only references setting from and P-Asserted-Identity headers for warm transfers.
[(2) ]() , [(3) ]()
## Your Options
1. *Cold Transfer (SIP REFER) * - Retell Twilio numbers support showing the user's number on both warm and cold transfers. However, for custom telephony via SIP trunking, cold transfer using SIP REFER is the documented method that can preserve caller ID, though it's up to the telephony provider to support caller ID override for SIP REFER.
[(2) ]() , [(3) ]()
2. Use Retell-Purchased Twilio Numbers - UsAI Evy
01/20/2026, 11:41 AMAI Evy
01/20/2026, 11:41 AMAI Evy
01/20/2026, 11:41 AMVako-SV
01/20/2026, 5:31 PMAI Evy
01/20/2026, 5:31 PMAI Evy
01/20/2026, 5:31 PMAI Evy
01/20/2026, 5:31 PMAI Evy
01/20/2026, 5:31 PMVako-SV
01/20/2026, 5:32 PMAI Evy
01/20/2026, 5:32 PMAI Evy
01/20/2026, 5:32 PMAI Evy
01/20/2026, 5:32 PMtelephony_provider_permission_denied errors with Telnyx numbers [(1) ]()
- Custom voice integration problems with ElevenLabs [(2) ]()
- Pronunciation issues with specific words/acronyms (like "IQA") [(1) ]()
However, none of these match the specific TTS behavior you're describing where digits are slurred, clipped, or read too fast.
Since I don't have direct evidence of others reporting this exact issue in the available sources, I'd recommend:
1. Opening a support ticket or posting in the bug-report channel with specific call IDs where this occurred
2. Including which TTS provider and voice you're using
3. Sharing audio samples if possible
This would help the Retell team investigate whether this is a known issue or something specific to your configuration.AI Evy
01/20/2026, 5:32 PMVako-SV
01/24/2026, 2:31 PMAI Evy
01/24/2026, 2:31 PMAI Evy
01/24/2026, 2:31 PMgeneral_tools array. The PATCH /update-retell-llm/{llm_id} endpoint replaces the entire general_tools array with what you provide. [(1) ]()
## Confirmed Behavior
A community member reported a similar finding: when exporting and re-importing an agent's LLM configuration, the general_tools array must be sent in its entirety. They noted that "Export of the agent's llm section has general_tools and does not follow the same format as the sdk / api for updating" and had to convert certain fields to make the import work. [(2) ]()
## Recommended Approach
Re-uploading the full general_tools array is the standard practice. Your workflow should be:
1. Retrieve the current LLM configuration using the GET endpoint or client.llm.list() [(3) ]()
2. Modify the specific tool in your local copy of the general_tools array
3. Send the complete updated array via PATCH
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const llmResponses = await client.llm.list() ;
This retrieves all your LLMs so you can extract the current general_tools, modify the specific tool, and then send the full array back in your update request.AI Evy
01/24/2026, 2:31 PMAI Evy
01/24/2026, 2:31 PM