Skip to content
Bandwidth integration

Connect a Bandwidth SIP trunk to Wixzel Voice

To run an AI voice agent on a Bandwidth number, connect your Bandwidth SIP trunk to Wixzel Voice: add the platform_ip your trunk returns to the Voice IP addresses / DNS hosts on a location so outbound calls are accepted, and set the Origination to its origination_uri so inbound calls arrive. Bandwidth keeps billing you for the line at your rates; Wixzel Voice bills the voice engine per second from a prepaid balance.

Last updated

Published

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

What do you need before you start?

  • A Bandwidth account, and the host and credentials of the trunk.
  • A phone number you own at Bandwidth, 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 Bandwidth trunk in Wixzel Voice?

The termination address Bandwidth assigns to your location. The setup guide does not print a Bandwidth host, so copy it from the Bandwidth App.

cURL
curl https://api.voice.wixzel.com/v1/sip-trunks \
  -H "Authorization: Bearer $WIXZEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Bandwidth",
    "host": "<the SIP host Bandwidth gives you>",
    "transport": "udp"
  }'

Add username and password to the body if Bandwidth 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 Bandwidth?

SettingWhat Bandwidth calls itValue
Allowlist calls from Wixzel VoiceVoice IP addresses / DNS hosts on a location95.216.218.102
Send inbound calls to Wixzel VoiceOriginationsip: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 Bandwidth go through the console field by field.

What goes wrong on Bandwidth?

  • Bandwidth does not support SIP REGISTER, so a static IP is not optional here: IP authentication, or the network-bridge credentials above, is the only way the trunk works.
  • Bandwidth signals from more than one proxy. Allow every address it lists for your region, not the first one; a call arriving from the second proxy is otherwise rejected intermittently, which is far harder to diagnose than a clean failure.

Why did a call over Bandwidth not connect?

A call Bandwidth 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 Bandwidth cost?

Bandwidth 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

Does Bandwidth support SIP registration with Wixzel Voice?
No. Bandwidth does not support SIP REGISTER, so the trunk authenticates by IP: add the platform_ip your Wixzel Voice trunk returns to the location's Voice IP addresses. The alternative is Bandwidth's SIP Authentication (network bridge), with the username and password on the trunk and auth_realm set to the realm Bandwidth gives you.
Why are some Bandwidth calls rejected and others not?
Bandwidth signals from more than one proxy. If only the first address it lists for your region is allowed, a call arriving from the second proxy is rejected, so failures look intermittent. Allow every address Bandwidth lists for the region.

Other carriers