Rowan
03/30/2026, 7:23 AMAI Evy
03/30/2026, 7:23 AMAI Evy
03/30/2026, 7:23 AMAI Evy
03/30/2026, 7:23 AM18.98.16.120/30 (All regions)
- 143.223.88.0/21 (certain United States traffic)
- 161.115.160.0/19 (certain United States traffic)
Ziwo should whitelist these IP blocks on their side to allow traffic from Retell's SIP server.
Do you need to whitelist Ziwo's IPs on Retell's side?
No. Retell doesn't have a static IP that requires whitelisting from your telephony provider's side. [(2) ]() The authentication for elastic SIP trunking works through either valid credentials (username/password) or an approved IP whitelist on the telephony provider's side.
Additional requirements from Ziwo:
Beyond IP whitelisting, ensure Ziwo's SIP trunk configuration includes: [(1) ]()
- **Transport method**: TCP (recommended) , UDP, or TLS
- **SIP server URI**: sip:sip.retellai.com
- For specific transport methods, append to the URI:
- TCP: sip:sip.retellai.com;transport=tcp
- UDP: sip:sip.retellai.com;transport=udp
- TLS: sip:sip.retellai.com;transport=tls
You'll also need to set up authentication credentials (username/password) for the SIP trunk, which you'll use when importing your number into Retell. [(1) ]() [(3) ]()AI Evy
03/30/2026, 7:23 AMRowan
03/30/2026, 7:26 AMAI Evy
03/30/2026, 7:27 AMRowan
03/30/2026, 7:27 AMAI Evy
03/30/2026, 7:27 AMAI Evy
03/30/2026, 7:27 AM18.98.16.120/30 since it covers all regions. [(1) ]() However, if you're calling US/Canada numbers, you should also whitelist the additional US-specific IP blocks to ensure all traffic is properly allowed: [(2) ]()
- 143.223.88.0/21 (certain United States traffic) [(1) ]()
- 161.115.160.0/19 (certain United States traffic)
The documentation notes that "Some non US traffic might go from IPs not listed above, but will be migrated to the first IP block by 12/03/2025".
For US-based calling, whitelisting all three IP blocks is recommended to avoid any potential connection issues, as traffic may originate from any of these ranges. [(2) ]() [(3) ]()AI Evy
03/30/2026, 7:27 AMAI Evy
03/30/2026, 7:27 AMRowan
03/30/2026, 7:28 AMAI Evy
03/30/2026, 7:28 AMAI Evy
03/30/2026, 7:29 AM18.98.16.120/30 as it covers all regions. [(1) ]()
The two additional US-specific IP blocks (143.223.88.0/21 and 161.115.160.0/19) are specifically for certain United States traffic. Since you're based in the UAE and not routing calls through US infrastructure, you likely only need the primary 18.98.16.120/30 block.
However, the documentation notes that "some non US traffic might go from IPs not listed above, but will be migrated to the first IP block by 12/03/2025". This suggests that whitelisting 18.98.16.120/30 should be sufficient for your UAE setup, as all non-US traffic is being consolidated to this block.
To be safe and ensure no connectivity issues, you could whitelist all three blocks, but for UAE-specific traffic, the primary 18.98.16.120/30 block should cover your needs.AI Evy
03/30/2026, 7:29 AMAI Evy
03/30/2026, 7:29 AMRowan
04/20/2026, 10:27 AMAI Evy
04/20/2026, 10:27 AMAI Evy
04/20/2026, 10:28 AM///## Tool Usage Instructions
1. Gather initial information about the customer's issue.
2. Determine the type of request:
- If customer mentions "refund" or "money back":
→ Call function `transfer_to_support` immediately
- If customer needs order status:
→ Call function `check_order_status` with order_id
- If customer wants to change their order:
→ First call `check_order_status`
→ Then transition to modification_state
3. After retrieving information:
- Always summarize what you found
- Ask if they need additional help
- If yes, determine next appropriate action
Consider Switching to Conversation Flow - If your agent handles complex logic or multiple tools, Conversation Flow agents provide more deterministic behavior than Single/Multi Prompt agents. They work better when you have:
- Multiple decision branches (more than 3-4 conditional paths)
- Tool coordination (using 5+ different functions/tools)
- State management (tracking multiple variables throughout the conversation)
- Reliability concerns (single prompt shows inconsistent behavior)
Lock Down Critical Rules - Add strict rules at the top of your prompt to prevent hallucinations: [(2) ]()
CRITICAL RULE:
You must ONLY offer the time exactly as written in {{availability_text}}.
You are not allowed to guess, infer, or suggest other dates.
If availability_text is missing, politely end the call.
To see examples of effective prompts, create a new agent in the Dashboard and explore the pre-built templates. [(1) ]()AI Evy
04/20/2026, 10:28 AM///## Identity
You are a friendly AI assistant for [Company Name].
Your role is to [specific purpose].
You have expertise in [relevant domains].
///## Style Guardrails
Be concise: Keep responses under 2 sentences unless explaining complex topics.
Be conversational: Use natural language, contractions, and acknowledge what the caller says.
Be empathetic: Show understanding for the caller's situation.
///## Response Guidelines
Return dates in spoken form: Say "January fifteenth" not "1/15".
Ask one question at a time: Avoid overwhelming the caller with multiple questions.
Confirm understanding: Paraphrase important information back to the caller.
///## Task Instructions
[Specific steps the agent should follow]
///## Objection Handling
If the caller says they're not interested: "I understand. Is there anything specific..."
If the caller is frustrated: "I hear your frustration, let me help resolve this..."
Add Explicit Tool Calling Instructions - If your agent uses tools/functions, define clear triggers:AI Evy
04/20/2026, 10:28 AMAI Evy
04/20/2026, 10:28 AMAI Evy
04/20/2026, 10:59 AMRowan
04/20/2026, 10:59 AMAI Evy
04/20/2026, 10:59 AMAI Evy
04/20/2026, 10:59 AMAI Evy
04/20/2026, 10:59 AMjson
{
"states": [
{
"name": "information_collection",
"state_prompt": "You will follow the steps below to collect information...",
"edges": [
{
"destination_state_name": "appointment_booking",
"description": "Transition to book an appointment."
}
],
"tools": [
{
"type": "transfer_call",
"name": "transfer_to_support",
"description": "Transfer to the support team.",
"transfer_destination": {
"type": "predefined",
"number": "16175551212",
"ignore_e164_validation": false
},
"transfer_option": {
"type": "cold_transfer",
"show_transferee_as_caller": false
}
}
]
},
{
"name": "appointment_booking",
"state_prompt": "You will follow the steps below to book an appointment...",
"tools": [
{
"type": "book_appointment_cal",
"name": "book_appointment",
"description": "Book an annual check up.",
"cal_api_key": "cal_live_xxxxxxxxxxxx",
"event_type_id": 60444,
"timezone": "America/Los_Angeles"
}
]
}
],
"starting_state": "information_collection"
}
When to Use Multi-Prompt: [(1) ]()
- Agents with multiple decision branches (more than 3-4 conditional paths)
- Using 5+ different functions/tools
- Need to track multiple variables throughout the conversation
- Single prompt shows inconsistent behavior
Multi-prompt agents reduce hallucination by keeping prompts shorter and limiting tool choices per state, helping the LLM better focus and follow rules.AI Evy
04/20/2026, 10:59 AMRowan
04/21/2026, 3:02 PMRowan
04/21/2026, 3:02 PMAI Evy
04/21/2026, 3:02 PMAI Evy
04/21/2026, 3:02 PM18.98.16.120/30 (All regions) - This is a /30 subnet = 4 IP addresses
- 143.223.88.0/21 (certain United States traffic) - This is a /21 subnet = 2,048 IP addresses
- 161.115.160.0/19 (certain United States traffic) - This is a /19 subnet = 8,192 IP addresses
You can respond to your provider:
"These are the official IP blocks provided by Retell AI for SIP signaling. The smallest block (18.98.16.120/30) contains only 4 IPs and covers all regions. The larger blocks are specifically for US traffic routing. Retell does not provide more specific/narrower IP ranges than these official blocks. If your security policy requires narrower ranges, you may want to use credential-based authentication instead of IP whitelisting."
Regarding SIP Trunk Credentials:
Your telephony provider has this backwards. For elastic SIP trunking with Retell, you (the customer) create the credentials on your telephony provider's side, not Retell's side. [(2) ]() [(1) ]()
You can respond:
"For elastic SIP trunking integration, the authentication flow works as follows: I create SIP trunk credentials (username/password) within your platform, then I provide those credentials to Retell when importing my phone number. Retell will use these credentials to authenticate outbound calls to your SIP trunk. You do not generate credentials for Retell - I generate them on your platform and share them with Retell."
Setup Steps:
1. Create credentials (username/password) in your telephony provider's SIP trunk configuration [(2) ](htAI Evy
04/21/2026, 3:02 PMAI Evy
04/21/2026, 3:02 PMRowan
04/21/2026, 3:04 PMRowan
04/21/2026, 3:05 PMAI Evy
04/21/2026, 3:05 PMAI Evy
04/21/2026, 3:05 PM18.98.16.120/30, 143.223.88.0/21, 161.115.160.0/19) in your telephony provider's settings
Which should you choose?
Since your provider has security concerns about the IP ranges, credential-based authentication is the better option for you. This approach doesn't require IP whitelisting and provides secure authentication through username/password credentials you create on your telephony provider's platform.
However, some community discussions suggest using both methods together for added reliability, though the official documentation presents them as alternatives. [(2) ]() [(3) ]()
Setup with credentials only:
1. Create SIP trunk credentials (username/password) in your telephony provider's dashboard
2. Note your termination SIP URI from your provider
3. Import your number into Retell, providing the termination URI and the credentials you created [(1) ]() [(4) ]()AI Evy
04/21/2026, 3:05 PMAI Evy
04/21/2026, 3:05 PMRowan
04/21/2026, 3:12 PMRowan
04/21/2026, 3:12 PMAI Evy
04/21/2026, 3:12 PMAI Evy
04/21/2026, 3:12 PM18.98.16.120/30 (All regions)
- 143.223.88.0/21 (certain United States traffic)
- 161.115.160.0/19 (certain United States traffic)
When you import your number into Retell, you'll provide the termination SIP URI but can leave the username/password fields blank since authentication will be handled via IP whitelisting. [(1) ]()
However, given your provider's security concerns about the broad IP ranges, credential-based authentication might be more acceptable to them. The documentation presents these as alternative authentication methods - you can choose the one that works best for your security requirements.AI Evy
04/21/2026, 3:12 PMAI Evy
04/21/2026, 3:12 PMRowan
04/21/2026, 3:23 PMRowan
04/21/2026, 3:23 PMAI Evy
04/21/2026, 3:23 PMAI Evy
04/21/2026, 3:23 PM18.98.16.120/30 (All regions)
- 143.223.88.0/21 (certain United States traffic)
- 161.115.160.0/19 (certain United States traffic)
When importing your number into Retell, you'll provide Ziwo's termination SIP URI but can leave username/password blank since authentication is handled via IP whitelisting.
The setup process is the same as documented for other providers like Twilio, Telnyx, and Vonage - these guides serve as references for any telephony provider supporting SIP trunks.
**AI Evy
04/21/2026, 3:23 PMAI Evy
04/21/2026, 3:23 PMRowan
04/21/2026, 3:30 PMAI Evy
04/21/2026, 3:30 PMAI Evy
04/21/2026, 3:30 PM18.98.16.120/30 (All regions) - 4 IP addresses
- 143.223.88.0/21 (certain United States traffic)
- 161.115.160.0/19 (certain United States traffic)
Your options with Ziwo:
Since Ziwo has security concerns about the broad IP ranges and Retell doesn't provide narrower ranges, credential-based authentication is your best solution. This eliminates the need for IP whitelisting entirely.
Setup with credentials:
1. Create SIP trunk credentials (username/password) in Ziwo's dashboard
2. Get Ziwo's termination SIP URI
3. Import your number into Retell, providing the termination URI and credentials you created
This approach addresses Ziwo's security requirements while maintaining full SIP trunk functionality with Retell.AI Evy
04/21/2026, 3:30 PMAI Evy
04/21/2026, 3:30 PMRowan
04/21/2026, 3:33 PMAI Evy
04/21/2026, 3:33 PMAI Evy
04/21/2026, 3:33 PM18.98.16.120/30 is narrow - it contains only 4 IP addresses. [(1) ]() This is the smallest and most specific CIDR block Retell provides.
For Ziwo, you have two options:
1. **Use only the narrow block**: Since you're UAE-based, whitelist only 18.98.16.120/30 (4 IPs, covers all regions) . The documentation notes that "some non US traffic might go from IPs not listed above, but will be migrated to the first IP block by 12/03/2025".
2. **Use credential-based authentication instead**: This completely avoids the IP whitelisting concern and may be more acceptable to Ziwo's security team.
Recommendation: Start with just 18.98.16.120/30 for IP whitelisting. If Ziwo still considers 4 IPs too broad for their security policy, switch to credential-based authentication.AI Evy
04/21/2026, 3:33 PMAI Evy
04/21/2026, 3:33 PMRowan
04/21/2026, 3:36 PMAI Evy
04/21/2026, 3:36 PMAI Evy
04/21/2026, 3:36 PM18.98.16.120/30 block is used for SIP signaling regardless of where your calls originate or terminate - whether you're in the UAE, United States, Europe, or anywhere else.
The other two CIDR blocks (143.223.88.0/21 and 161.115.160.0/19) are specifically labeled as "certain United States traffic", meaning they only handle some US-based call routing. [(1) ]() [(2) ]() [(3) ]()
Since you're using Ziwo from the UAE, the 18.98.16.120/30 block (4 IPs) is the primary range you need to whitelist - it covers your region and all other regions globally. [(1) ]()AI Evy
04/21/2026, 3:37 PMAI Evy
04/21/2026, 3:37 PMRowan
04/21/2026, 3:37 PMRowan
04/21/2026, 3:37 PMAI Evy
04/21/2026, 3:38 PMAI Evy
04/21/2026, 3:38 PM18.98.16.120/30 (the 4-IP block covering all regions) [(3) ]()
- Create SIP trunk credentials (username/password) in Ziwo's dashboard [(1) ]()
- Note Ziwo's termination SIP URI
2. When importing your number into Retell:
- Provide Ziwo's termination SIP URI [(1) ]() [(3) ]()
- Include the username and password you created in Ziwo [(1) ]()
This dual-layer approach provides both network-level security (IP whitelisting) and application-level authentication (credentials) . While the documentation presents these as alternative options ("or") , some community members have found using both methods together improves reliability. [(2) ]()
Benefits of using both:
- Enhanced security with two authentication layers
- Potential fallback if one method encounters issues
- May satisfy Ziwo's security requirements while maintaining robust authenticationAI Evy
04/21/2026, 3:38 PMAI Evy
04/21/2026, 3:38 PMAI Evy
04/21/2026, 3:40 PMRowan
04/21/2026, 3:40 PMAI Evy
04/21/2026, 3:41 PM143.223.88.0/21 contains 2,048 IP addresses (certain United States traffic)
- 161.115.160.0/19 contains 8,192 IP addresses (certain United States traffic)
In comparison, 18.98.16.120/30 contains only 4 IP addresses and covers all regions.
Since you're in the UAE and Ziwo has security concerns about broad IP ranges, you should whitelist only the 18.98.16.120/30 block (4 IPs) as it covers your region globally. The larger US-specific blocks are unnecessary for your use case. [(1) ]()AI Evy
04/21/2026, 3:41 PMAI Evy
04/21/2026, 3:41 PMRowan
04/21/2026, 3:44 PMAI Evy
04/21/2026, 3:44 PMAI Evy
04/21/2026, 3:44 PM18.98.16.120/30 in their SIP trunk access control settings [(1) ]() [(2) ]()
2. Get Ziwo's termination SIP URI from their platform
3. Import your number into Retell, providing Ziwo's termination SIP URI
4. Leave the username/password fields blank since authentication is handled via IP whitelisting [(2) ]()
The termination SIP URI is essential for the integration - it's the destination address Retell uses to send outbound calls through Ziwo's network. [(1) ]() [(2) ]() [(3) ]()AI Evy
04/21/2026, 3:44 PMAI Evy
04/21/2026, 3:44 PMRowan
04/23/2026, 11:00 AMAI Evy
04/23/2026, 11:00 AMAI Evy
04/23/2026, 11:00 AMsip:sip.retellai.com
- No credentials are needed for inbound - Ziwo just routes calls to this URI [(1) ]()
For outbound calls (Retell → Ziwo) :
- Ziwo needs to create SIP trunk credentials (username/password) in their dashboard [(1) ]() [(2) ]()
- Ziwo provides you with their termination SIP URI (e.g., something like yourdevice.sip.ziwo.com) [(3) ]()
- You then import your number into Retell and provide Ziwo's termination URI along with the credentials Ziwo gave you [(1) ]() [(4) ]()
What Ziwo needs from you:
- Retell's SIP server address for origination (inbound) : sip:sip.retellai.com [(1) ]() [(2) ]() [(5) ]()
- Retell's IP block to whitelist (if using IP authentication) : 18.98.16.120/30 [(1) ]()
What you need from Ziwo:
- Their termination SIP URI for outbound calls [(1) ]() [(2) ]()
- SIP trunk credAI Evy
04/23/2026, 11:00 AMAI Evy
04/23/2026, 11:00 AMRowan
04/23/2026, 11:02 AMAI Evy
04/23/2026, 11:02 AMAI Evy
04/23/2026, 11:03 AMtermination_uri - Ziwo's SIP URI for outbound calls
- sip_trunk_auth_username - Username created by Ziwo
- sip_trunk_auth_password - Password created by Ziwo
The correct flow:
1. Ziwo creates SIP trunk credentials (username/password) in their system
2. Ziwo provides you with their termination URI and credentials
3. You import your number into Retell using Ziwo's information
4. Retell authenticates to Ziwo using those credentials for outbound calls [(1) ]() [(2) ]()
For inbound calls, Ziwo simply routes calls to Retell's SIP server (sip:sip.retellai.com) without needing credentials from Retell.AI Evy
04/23/2026, 11:03 AMAI Evy
04/23/2026, 11:03 AMRowan
04/23/2026, 11:05 AMRowan
04/23/2026, 11:05 AMAI Evy
04/23/2026, 11:05 AMAI Evy
04/23/2026, 11:05 AMsip:sip.retellai.com
2. Whitelist Retell's IP block: 18.98.16.120/30 [(2) ]() [(1) ]()
What you need to do in Retell:
When importing your number, you still need to provide Ziwo's termination URI (even for inbound-only) , but you can leave the username and password fields blank since you won't be making outbound calls.
The key difference for inbound-only:
- No credentials needed from Ziwo [(1) ]()
- No termination authentication required [(2) ]()
- Ziwo simply routes incoming calls to sip:sip.retellai.com [(1) ]()
- Retell identifies which agent to use based on the phone number that received the call
This is the simplest setup - Ziwo just needs to point their SIP trunk's origination to Retell's SIP server and whitelist the IP block.AI Evy
04/23/2026, 11:05 AMAI Evy
04/23/2026, 11:05 AMRowan
04/23/2026, 1:36 PMAI Evy
04/23/2026, 1:36 PMAI Evy
04/23/2026, 1:36 PM18.98.16.120/30 [(1) ]() [(2) ]()
2. Credential-based authentication - Create username and password on your provider's side
The accurate statement should be:
"Retell supports either IP whitelisting OR credential-based authentication. For your setup with Ziwo, you can choose just IP whitelisting (using the 18.98.16.120/30 block) if that meets your security requirements."
While some community members have reported using both methods together for added reliability, the official documentation does not describe combining them as "ideal" - it presents them as options.
For inbound-only calls specifically, you only need Ziwo to route calls to sip:sip.retellai.com with IP whitelisting - no credentials required at all.AI Evy
04/23/2026, 1:36 PMAI Evy
04/23/2026, 1:36 PMRowan
04/23/2026, 1:37 PMRowan
04/23/2026, 1:38 PMAI Evy
04/23/2026, 1:38 PMAI Evy
04/23/2026, 1:38 PM18.98.16.120/30 in their SIP trunk access control settings. This allows Retell to authenticate based on the source IP address rather than username/password credentials. [(1) ]()
What you need to provide when importing your number:
When importing your Ziwo number into Retell, you must provide: [(1) ]() [(3) ]()
- termination_uri - Ziwo's termination SIP URI for routing outbound calls [(1) ]() [(2) ]()
- Leave sip_trunk_auth_username and sip_trunk_auth_password blank (authentication handled via IP) [(1) ]() [(3) ]()
The authentication choice:
The documentation states: "For your elastic SIP trunk to accept our outbound request, you need to whitelist IP address or create a auth with username and password." [(1) ]() This means you can choose either IP whitelisting OR credentials - both methods work for outbound calls. [(1) ]() [(2) ]()
Since you're using the narrow 18.98.16.120/30 block (only 4 IPs) , IP whitelisting alone should be acceptable to Ziwo's security requirements for outbound calling. [(2) ]()AI Evy
04/23/2026, 1:38 PMAI Evy
04/23/2026, 1:38 PMRowan
04/23/2026, 1:40 PMAI Evy
04/23/2026, 1:40 PMAI Evy
04/23/2026, 1:40 PMsip:sip.retellai.com - correct
What needs clarification:
For outbound calls, you have two authentication options, not just credentials:
1. **Credential-based**: Provider generates SIP trunk credentials (username/password) , which you provide to Retell when importing the number [(1) ]() [(3) ]()
2. **IP whitelisting**: Provider whitelists Retell's CIDR block 18.98.16.120/30 instead of using credentials [(1) ]() [(2) ]()
The accurate statement should be:
- Inbound (provider → Retell) : calls route to sip:sip.retellai.com with IP whitelisting, no credentials needed
- Outbound (Retell → provider) : the provider either (a) generates SIP trunk credentials for Retell to use, OR (b) whitelists Retell's IP block 18.98.16.120/30 - both methods work
For elastic SIP trunking, your telephony provider needs to accept Retell's outbound requests by either whitelisting the IP address or creating authentication with username and password. [(1) ]() When importing your number, you provide the termination URI and optionally the credentials if using that authentication method. [(1) ]() [(3) ]()AI Evy
04/23/2026, 1:41 PMAI Evy
04/23/2026, 1:41 PMRowan
04/23/2026, 1:46 PMAI Evy
04/23/2026, 1:47 PMAI Evy
04/23/2026, 1:47 PMsip:sip.retellai.com. [(1) ]() [(2) ]()
For inbound calls:
- Ziwo configures their SIP trunk origination URI to sip:sip.retellai.com [(1) ]()
- No authentication credentials are needed from either side [(1) ]() [(2) ]()
- Ziwo may optionally whitelist Retell's IP block 18.98.16.120/30, but this is for network-level security, not credential-based authentication
Why credentials aren't used for inbound:
The authentication model for elastic SIP trunking is one-directional. Credentials only apply to outbound calls where Retell needs to authenticate to Ziwo's termination endpoint. [(1) ]() For inbound, Ziwo is initiating the connection to Retell's publicly accessible SIP server, so no authentication from Retell is required. [(2) ]()
The complete authentication picture:
- **Inbound**: Ziwo → sip:sip.retellai.com (no credentials needed) [(1) ]() [(2) ]()
- **Outbound**: Retell → Ziwo's termination URI (either IP whitelisting OR credentials required) [(1) ]()AI Evy
04/23/2026, 1:47 PMAI Evy
04/23/2026, 1:47 PMRowan
04/23/2026, 1:52 PMAI Evy
04/23/2026, 1:52 PMAI Evy
04/23/2026, 1:52 PMsip:sip.retellai.com
- IP blocks to whitelist: 18.98.16.120/30 [(2) ]()
What your telephony provider (Ziwo) provides:
- Termination SIP URI for outbound calls (e.g., something like yourdevice.sip.ziwo.com) [(1) ]() [(3) ]()
- Optionally, SIP trunk credentials (username/password) if not using IP whitelisting [(1) ]()
When you import your Ziwo number into Retell, you must supply Ziwo's termination URI in the termination_uri field. [(4) ]() This tells Retell where to route outbound calls through Ziwo's network. [(1) ]() [(2) ]()AI Evy
04/23/2026, 1:52 PMAI Evy
04/23/2026, 1:52 PMRowan
04/23/2026, 1:59 PMAI Evy
04/23/2026, 1:59 PMAI Evy
04/23/2026, 1:59 PMsip:sip.retellai.com . When importing your number into Retell, you still need to provide Ziwo's termination URI (even though you won't use it for outbound) , but leave the username and password fields blank .
For both inbound and outbound (no credentials) :
Use IP whitelisting instead of credentials. Here's the setup:
1. Ziwo configures inbound (origination) :
- Set origination URI to sip:sip.retellai.com
2. Ziwo configures outbound (termination) :
- Whitelist Retell's CIDR block: 18.98.16.120/30
- Provide you with their termination SIP URI
3. You import the number into Retell: [(1) ]() [(2) ]()
- Provide Ziwo's termination URI in the termination_uri field [(2) ]()
- Leave sip_trunk_auth_username and sip_trunk_auth_password blank
The documentation states: "For your elastic SIP trunk to accept our outbound request, you need to whitelist IP address or create a auth with username and password." [(1) ]() This means IP whitelisting alone is sufficient for outbound calls without needing credentials .AI Evy
04/23/2026, 1:59 PMAI Evy
04/23/2026, 1:59 PMRowan
04/23/2026, 2:12 PMAI Evy
04/23/2026, 2:12 PMAI Evy
04/23/2026, 2:13 PMtermination_uri field is required in the API call. [(3) ]() This is Ziwo's SIP endpoint that Retell uses to route outbound calls through their network. [(1) ]() [(2) ]()
For inbound-only:
Even if you only plan to receive inbound calls, you still need to provide Ziwo's termination URI when importing the number into Retell. You just won't actually use it for making outbound calls. [(1) ]()
For both inbound and outbound:
The termination URI is essential - it tells Retell where to send outbound calls. For example, with Twilio it typically ends with .pstn.twilio.com. Ziwo should provide you with their equivalent termination SIP URI.
What to ask Ziwo for:
Request their termination SIP URI (the endpoint Retell will use to route outbound calls through Ziwo's network) . [(1) ]() [(2) ]()AI Evy
04/23/2026, 2:13 PMAI Evy
04/23/2026, 2:13 PMRowan
04/23/2026, 2:22 PMAI Evy
04/23/2026, 2:22 PMAI Evy
04/23/2026, 2:23 PM18.98.16.120/30
- **Credential-based authentication**: Create username and password [(1) ]()
The documentation does not describe using both methods together as a recommended or "added security" approach. [(1) ]() [(2) ]() While it's technically possible that some telephony providers might accept both configurations simultaneously, the official Retell documentation presents these as either/or options, not as a combined security strategy.
For your Ziwo setup, you should choose one method:
- Use IP whitelisting alone (whitelist 18.98.16.120/30)
- OR use credentials alone (username/password from Ziwo) [(1) ]()AI Evy
04/23/2026, 2:23 PMAI Evy
04/23/2026, 2:23 PMRowan
04/23/2026, 2:25 PMAI Evy
04/23/2026, 2:25 PMAI Evy
04/23/2026, 2:25 PM18.98.16.120/30
- **Credential-based authentication**: Use username and password from Ziwo [(1) ]()
While some telephony providers might technically accept both configurations, the official Retell documentation does not recommend or describe using both together as an "added security" approach. [(1) ]() [(2) ]()
I apologize for the inconsistency in my earlier responses. Thank you for catching this.AI Evy
04/23/2026, 2:25 PMAI Evy
04/23/2026, 2:25 PMRowan
04/23/2026, 2:46 PMAI Evy
04/23/2026, 2:46 PMAI Evy
04/23/2026, 2:46 PMsip_trunk_auth_username and sip_trunk_auth_password that come from your telephony provider. [(2) ]()
3. Retell does not provide a termination URI; it must be provided by the telephony provider (ZIWO) . ✅
Correct. The termination_uri field is required when importing a number and must come from your provider (e.g., for Twilio it ends with .pstn.twilio.com) . [(1) ]() [(2) ]()
4. Inbound calls (ZIWO → Retell) are routed to sip:sip.retellai.com. ✅
Correct. For origination (inbound) , you specify Retell's SIP server address as sip:sip.retellai.com. [(1) ]() [(3) ]() [(4) ]()
5. Inbound authentication is handled only via IP whitelisting (no SIP credentials used) . ✅
Correct. For inbound calls, no credentials are needed from either side. [(1) ]()
6. Outbound calls (Retell → ZIWO) require provider-side authentication (either SIP credentials or IP whitelisting) . ✅
Correct. The documentation states: "For your elastic SIP trunk to accept our outbound request, you need to whitelist IP address or create a auth with username and password."
**7. Retell supports IP whitelisting as a suAI Evy
04/23/2026, 2:46 PM18.98.16.120/30 instead of using credentials.
8. The current POC scope may be inbound only (uncertainty about whether outbound is included or not) . ✅
This is a reasonable statement about your specific project scope - not something the documentation would confirm or deny.
9. Retell dashboard does not include an option to generate SIP credentials or configure them internally. ✅
Correct. The dashboard allows you to enter provider-supplied credentials when importing a number, but does not generate them. [(1) ]() [(2) ]()
All nine statements accurately reflect how Retell's elastic SIP trunking integration works.AI Evy
04/23/2026, 2:46 PMAI Evy
04/23/2026, 2:46 PMRowan
04/27/2026, 2:10 PMAI Evy
04/27/2026, 2:10 PMAI Evy
04/27/2026, 2:10 PMtermination_uri field is required. The API documentation shows:
json
{
"phone_number": "+14157774444",
"termination_uri": "someuri.pstn.twilio.com"
}
The termination_uri is described as "The termination uri to uniquely identify your elastic SIP trunk. This is used for outbound calls."
Why the termination URI is required:
Even if you only plan to handle inbound calls, Retell's system architecture requires the termination URI when importing a number through elastic SIP trunking. [(2) ]() [(1) ]() This is a required field in the import process, regardless of whether you intend to use outbound functionality. [(1) ]()
Alternative approach if you truly need inbound-only:
If you have a more complex telephony setup that cannot use elastic SIP trunking, you could use Method 2: Dial to SIP URI instead. [(2) ]() With this method, you would call the Register Phone Call API to obtain a call_id, then dial to sip:{call_id}@sip.retellai.com. [(2) ]() [(3) ]() However, this requires custom code integration with your telephony provider and is not the recommended approach. [(2) ]()AI Evy
04/27/2026, 2:10 PMAI Evy
04/27/2026, 2:10 PMRowan
05/14/2026, 1:28 PMAI Evy
05/14/2026, 1:28 PMAI Evy
05/14/2026, 1:28 PM+14157774444) [(3) ]()
- **Termination SIP URI**: Ziwo's termination URI that you received [(1) ]() [(2) ]()
- **SIP Username / Password**: Leave blank since you're using IP whitelisting for authentication [(1) ]()
Via API:
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const phoneNumberResponse = await client.phoneNumber.import({
phone_number: '+14157774444',
termination_uri: 'someuri.pstn.twilio.com',
}) ;
console.log(phoneNumberResponse.inbound_agent_id) ;AI Evy
05/14/2026, 1:28 PMAI Evy
05/14/2026, 1:28 PMsip:sip.retellai.com. [(1) ]() [(2) ]()
3. Assign a Retell agent to the number
After importing, bind the number to a specific Retell AI agent in your dashboard so inbound calls are handled by the appropriate agent. [(1) ]()
4. Test the integration
- **Inbound**: Place a call to your DID and verify the assigned AI agent responds
- **Outbound**: Use the Retell dashboard or Create Phone Call API to initiate outbound calls
Once imported, your number will appear in the Retell dashboard and you can make and receive calls just like a Retell-purchased number.AI Evy
05/14/2026, 1:28 PMRowan
05/14/2026, 1:29 PMAI Evy
05/14/2026, 1:29 PMAI Evy
05/14/2026, 1:29 PMinbound_agents field:
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const phoneNumberResponse = await client.phoneNumber.import({
phone_number: '+14157774444',
termination_uri: 'someuri.pstn.twilio.com',
}) ;
console.log(phoneNumberResponse.inbound_agent_id) ;
The response structure shows how multiple agents are configured:
json
{
"inbound_agents": [
{
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"weight": 0.5,
"agent_version": 1
}
]
}
Key requirements:
- If inbound_agents is set and non-empty, one agent will be picked randomly for each inbound call with probability proportional to the weight
- Total weights must add up to 1
- If not set or empty, the system falls back to inbound_agent_id
Alternative approach using webhooks:
You can also use an inbound_webhook_url to dynamically override the agent ID for each specific call, allowing you to implement custom routing logic based on caller information or other conditions. [(1) ]() [(2) ]()AI Evy
05/14/2026, 1:29 PMAI Evy
05/14/2026, 1:29 PMRowan
05/14/2026, 1:31 PMAI Evy
05/14/2026, 1:32 PMAI Evy
05/14/2026, 1:32 PMAI Evy
05/14/2026, 1:32 PMAI Evy
05/14/2026, 1:32 PMAI Evy
05/14/2026, 1:36 PMRowan
05/14/2026, 1:36 PMAI Evy
05/14/2026, 1:36 PMsip.retellai.com. [(1) ]() [(4) ]() [(5) ]() This can only be confirmed when a real call is placed.
Recommendation:
Make a quick test call to the DID to veriAI Evy
05/14/2026, 1:36 PMAI Evy
05/14/2026, 1:36 PMRowan
07/10/2026, 9:44 AMAI Evy
07/10/2026, 9:44 AMAI Evy
07/10/2026, 9:44 AM18.98.16.120/30
- 143.223.88.0/21
- 161.115.160.0/19
Additional webhook/API traffic IP: [(2) ]()
- 100.20.5.228
For European servers:
A community member asked about European server IPs and mentioned seeing voice traffic from different IP addresses. However, the official documentation currently only lists the U.S. IP ranges above. [(1) ]()
Important notes:
1. There is no separate RTP range documented - the same IPs handle both SIP signaling and RTP media. [(1) ]() [(2) ]()
2. If you're using European servers on Ziwo's side and experiencing issues, you may want to reach out to Retell support at the [Customer Support Portal]() or [support@retellai.com](support@retellai.com) to confirm whether additional European IP ranges need to be whitelisted. [(3) ]() [(4) ]()
3. Make sure Ziwo whitelists all three U.S. CIDR blocks for both inbound and outbound traffic to ensure proper SIP and RTP connectivity. [(1) ]() [(2) ]()AI Evy
07/10/2026, 9:44 AMAI Evy
07/10/2026, 9:44 AMRowan
07/15/2026, 1:39 PMAI Evy
07/15/2026, 1:39 PMAI Evy
07/15/2026, 1:39 PMAI Evy
07/15/2026, 1:39 PMAI Evy
07/15/2026, 1:39 PMRowan
07/15/2026, 1:44 PMRowan
07/15/2026, 1:45 PMAI Evy
07/15/2026, 1:45 PMAI Evy
07/15/2026, 1:45 PMgpt-realtime-2
- gpt-realtime-1.5
- gpt-realtime
- gpt-realtime-mini
These are configured using the s2s_model parameter when creating or updating a Retell LLM. Note that you can only set either s2s_model or model (the text-based LLM) , not both.
2. GPT-Live Roadmap
I don't have specific information about GPT-Live integration plans or timelines in the available sources. For roadmap questions about unreleased OpenAI models, I'd recommend:
- [Documentation]()
- [Hire certified Retell partner]()
3. Custom SIP Telephony Compatibility
Based on the architecture described in the sources, Retell's Voice AI system includes "Automatic Speech Recognition (ASR) , Large Language Model (LLM) , Dialog Management & Turn-Taking, Text-to-Speech (TTS) Synthesis, and API & System Integration." [(3) ]()
The sources confirm that speech-to-speech models work within Retell's standard telephony infrastructure, which includes custom SIP trunking support. Since you've already successfully configured custom SIP with IP whitelisting, speech-to-speech models should work over your existing SIP trunk setup.
4. Custom Voice Support with Speech-to-Speech
I don't have explicit documentation about whether custom/cloned voices (like ElevenLabs) can be used with speech-to-speech models. The s2s_model parameter documentation doesn't specify voice customization options. [(1) ](AI Evy
07/15/2026, 1:45 PMAI Evy
07/15/2026, 1:45 PMRowan
08/11/2026, 11:44 AMAI Evy
08/11/2026, 11:44 AMAI Evy
08/11/2026, 11:44 AM{{variable_name}} syntax. You can pass client information like name, account details, or any custom data from your database.
For outbound calls:
When using the Create Phone Call API, set your client data in the retell_llm_dynamic_variables field: [(1) ]() [(2) ]()
json
{
"user_name": "John Smith",
"product_name": "Premium Plan",
"account_status": "active"
}
[(1) ]()
All values must be strings.
For inbound calls:
Supply dynamic variables through the Inbound Call Webhook, where you can query your database and return the client's information for that specific call.
In your agent prompts:
Reference the variables using double curly braces:
"Hello {{user_name}}, I understand you're interested in {{product_name}}. How can I help you today?"
Where you can use dynamic variables:
- Prompts (agent instructions and personality)
- Begin message (opening greeting)
- Tool configurations
- Webhook URLs
Important notes:
- All values in retell_llm_dynamic_variables must be strings
- Numbers should be stored as "42" and booleans as "true"
- You can set agent-level default values as fallbacks
This approach lets you pull client profiles from your database and personalize each conversation based on who's calling.AI Evy
08/11/2026, 11:44 AMAI Evy
08/11/2026, 11:44 AMRowan
08/11/2026, 11:45 AMAI Evy
08/11/2026, 11:45 AMAI Evy
08/11/2026, 11:46 AMretell_llm_dynamic_variables field: [(1) ]()
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const phoneCallResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
retell_llm_dynamic_variables: {
"customer_name": "John Doe",
"account_id": "12345",
"account_status": "active",
"last_purchase": "Premium Plan"
}
}) ;
Important: All values must be strings - convert numbers to "42" and booleans to "true". [(2) ]()
## For Inbound Calls
Supply dynamic variables in the Inbound Call Webhook response. When a call comes in, Retell will hit your webhook, where you can:
1. Query your database using the caller's phone number
2. Return the client's profile data in the webhook response
## Using the Data in Your Agent
Reference the variables in your agent's prompt using {{variable_name}} syntax:
"Hello {{customer_name}}, I see your account status is {{account_status}}. How can I help you today?"AI Evy
08/11/2026, 11:46 AMAI Evy
08/11/2026, 11:46 AMAI Evy
08/11/2026, 11:46 AM