Skip to content
Exotel integration

Connect an Exotel SIP trunk to Wixzel Voice

To run an AI voice agent on an Exotel number, connect Exotel Virtual SIP Trunking (vSIP) to Wixzel Voice: add the platform_ip your trunk returns to the ACL mapped to the trunk so outbound calls are accepted, and set the Destination URI to 95.216.218.102:5091 so inbound calls arrive. That is the platform's TCP port, because Exotel will not send UDP to the port in origination_uri. Exotel keeps billing you for the line at your rates; Wixzel Voice bills the voice engine per second from a prepaid balance.

Last updated

Published

Exotel is the carrier; Wixzel Voice is the voice AI API that runs the agent on top of it. They work together over standard SIP. Exotel is a trademark of its owner, and Wixzel Voice is not affiliated with or endorsed by Exotel.

What do you need before you start?

  • An Exotel account with Virtual SIP Trunking (vSIP), and the host and credentials of the trunk.
  • A phone number you own at Exotel, attached to that trunk. Wixzel Voice does not sell or port numbers.
  • A Wixzel Voice API key and some prepaid credit. The minimum top-up is $5; there is no free tier.
  • Wixzel Voice is in alpha and runs 5 concurrent calls per account by default, raised on request; web and app sessions count toward the same limit.

How do you create the Exotel trunk in Wixzel Voice?

Exotel publishes pstn.in4.exotel.com:5070 for TCP. Use TCP with Wixzel Voice: Exotel does not accept UDP, and the platform takes inbound SIP over UDP and TCP only.

cURL
curl https://api.voice.wixzel.com/v1/sip-trunks \
  -H "Authorization: Bearer $WIXZEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Exotel",
    "host": "pstn.in4.exotel.com",
    "port": 5070,
    "transport": "tcp"
  }'

Add username and password to the body if Exotel authenticates by credentials rather than IP. The password is encrypted at rest and never returned by the API again. The response carries platform_ip and origination_uri: the two values the next step needs.

What do you set at Exotel?

SettingWhat Exotel calls itValue
Allowlist calls from Wixzel VoiceACL mapped to the trunk95.216.218.102
Send inbound calls to Wixzel VoiceDestination URI95.216.218.102:5091 over TCP

Not verified yet. Inbound calls over Exotel have not been verified end to end yet. Ring your Exotel number yourself before routing callers to it.

Both values are today's: read platform_ip and origination_uri from GET /v1/sip-trunks rather than copying them from a page. Then register each number on the trunk with POST /v1/phone-numbers and give it an inbound_agent_id, so an agent answers it. The AI phone call API walkthrough has those requests, and the full setup steps for Exotel go through the console field by field.

What goes wrong on Exotel?

  • Exotel vSIP does not accept UDP, so keep the trunk on TCP. A transport mismatch looks like the carrier ignoring you.
  • Exotel is aimed at Indian numbering. In India an account that has not finished KYC, and for many providers DLT registration, can hold a positive balance and still have every outbound call cleared immediately. The portal shows the calls; it does not always show the reason.

Why did a call over Exotel not connect?

The failure code most often seen on Exotel:

failure_codeCarrier saidWhat it meansWhat to do
102408The carrier did not respond in time.Verify the trunk host and port, and that the carrier accepts SIP from platform_ip. If the carrier shows the call as received but never answered, set send_plus to false.

A call Exotel refused has status: "failed", a failure_code (the Q.850 cause from the carrier) and a failure_reason saying what to do, and it costs nothing. Every failure code, every refusal and how to debug a trunk are on the integrations page.

What does an AI call over Exotel cost?

Exotel bills you for the line at your rates; Wixzel Voice bills only the voice engine, per second of actual usage, from $0.0466 per connected minute on gemini-live to $0.1851 on deepgram-agent. Every engine's price.

Frequently asked questions

Why will my Exotel trunk not connect over UDP?
Exotel vSIP does not accept UDP. Set the Wixzel Voice trunk to transport: "tcp" with pstn.in4.exotel.com on port 5070.
Where do I point the Exotel Destination URI?
At 95.216.218.102:5091, over TCP. The origination_uri your trunk returns names the UDP port, 5090, which Exotel will not use; the platform takes SIP over TCP on 5091. Inbound calls over Exotel have not been verified end to end yet, so ring your Exotel number yourself before routing callers to it.

Other carriers