Connect a Vonage SIP trunk to Wixzel Voice
To run an AI voice agent on a Vonage number, connect Vonage Programmable SIP to Wixzel Voice: add the platform_ip your trunk returns to the ACL (Access Control List) so outbound calls are accepted, and send inbound calls to its origination_uri so inbound calls arrive. Vonage keeps billing you for the line at your rates; Wixzel Voice bills the voice engine per second from a prepaid balance.
Last updated
Published
Vonage is the carrier; Wixzel Voice is the voice AI API that runs the agent on top of it. They work together over standard SIP. Vonage is a trademark of its owner, and Wixzel Voice is not affiliated with or endorsed by Vonage.
What do you need before you start?
- A Vonage account with Programmable SIP, and the host and credentials of the trunk.
- A phone number you own at Vonage, 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 Vonage trunk in Wixzel Voice?
The SIP address the Vonage SIP Dashboard shows for the trunk. The setup guide does not print a Vonage host, so copy it from the dashboard.
curl https://api.voice.wixzel.com/v1/sip-trunks \
-H "Authorization: Bearer $WIXZEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Vonage",
"host": "<the SIP host of your Vonage trunk>",
"transport": "udp"
}'Add username and password to the body if Vonage 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 Vonage?
| Setting | What Vonage calls it | Value |
|---|---|---|
| Allowlist calls from Wixzel Voice | ACL (Access Control List) | 95.216.218.102 |
| Send inbound calls to Wixzel Voice | The destination for inbound calls; the setup steps name the field | sip:95.216.218.102:5090 |
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 Vonage go through the console field by field.
What goes wrong on Vonage?
- Vonage publishes its own IP ranges for the traffic it sends you. Wixzel Voice needs nothing opened on its side for them, but if your own firewall sits in front of anything else in the path, that list is the one to allow.
- Pick Programmable SIP, not the other Vonage product with SIP in its name; only Programmable SIP behaves like an elastic trunk.
Why did a call over Vonage not connect?
A call Vonage 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 Vonage cost?
Vonage 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
- Which Vonage product do I need for Wixzel Voice?
- Programmable SIP. Vonage has two products with SIP in the name, and Programmable SIP is the one that behaves like an elastic trunk. Its SIP Dashboard is where the ACL and the inbound settings live.
- Do I have to allow Vonage's IP ranges on the Wixzel Voice side?
- No. Vonage publishes the IP ranges its traffic comes from, but Wixzel Voice needs nothing opened for them. That list matters only if your own firewall sits somewhere else in the call path. What Vonage needs from you is the
platform_ipyour trunk returns, added to the trunk's ACL in the SIP Dashboard.
Other carriers
Elastic SIP Trunking. Allowlist the platform IP in a Termination IP ACL, and set the Origination SIP URI for inbound calls.
An IP-authenticated SIP Connection. Add the platform IP as an authorised address, pick an inbound region, and match the transport.
Zentrunk. An outbound trunk with the platform IP in its IP ACL, and a separate inbound trunk whose Primary URI points at the platform.
No SIP REGISTER, so a static IP is required. Add the platform IP to the location, configure Termination and Origination separately, or use network-bridge credentials.
Virtual SIP Trunking (vSIP), for Indian numbering, over TCP. The platform IP mapped to the trunk as an ACL, and the Destination URI pointed at the platform's TCP port for inbound.
A per-trunk SIP domain as the host, the platform IP in the trunk's IP ACL, and "origination URI" meaning the opposite of what it means on Twilio.
The pattern is the same everywhere: allowlist the platform IP, set the inbound destination to the origination URI, and match the number format and transport.
How the two halves of a trunk work, every failure code, and every carrier guide on one page.
