Skip to content
Bring your own SIP trunk

Connect any SIP provider's trunk to Wixzel Voice

To run an AI voice agent on numbers from any carrier, connect the carrier's SIP trunk to Wixzel Voice: allowlist the platform_ip your trunk returns so outbound calls are accepted, and send inbound calls to its origination_uri. Your carrier keeps billing you for the line at your rates; Wixzel Voice bills the voice engine per second from a prepaid balance.

Last updated

Published

What do you need before you start?

  • A SIP trunk from any carrier, with its host and, if it uses registration, a username and password.
  • A phone number you own at your carrier, 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 trunk in Wixzel Voice?

The SIP host your carrier gives you for the trunk.

cURL
curl https://api.voice.wixzel.com/v1/sip-trunks \
  -H "Authorization: Bearer $WIXZEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My carrier",
    "host": "sip.carrier.example",
    "transport": "udp"
  }'

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

SettingWhat your carrier calls itValue
Allowlist calls from Wixzel VoiceIP ACL, allowlist or authorised address95.216.218.102
Send inbound calls to Wixzel VoiceOrigination URI, or the carrier's name for itsip: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 any SIP provider go through the console field by field.

What goes wrong on an unfamiliar carrier?

  • An open SIP port is scanned for toll fraud within hours of appearing. Keep your carrier's own fraud controls on.
  • Some markets gate outbound calling behind identity checks. An account that has not finished KYC, or destination registration where the market requires it, can hold a positive balance and still have every outbound call cleared immediately.
  • A prepaid carrier balance is necessary but not sufficient. Confirm the specific destination range is enabled on the account, not just that there is credit.

Why did a call over your carrier not connect?

The failure codes most often seen on your carrier:

failure_codeCarrier saidWhat it meansWhat to do
1404The carrier does not recognise the number.Check the number format. If the carrier needs a technical dial prefix, set dial_prefix on the trunk.
3-The carrier has no route to this destination.The destination is probably not enabled on your carrier account. Ask the carrier to open the route.
28484The carrier rejected the number format.If the carrier needs a technical dial prefix, set dial_prefix on the trunk.
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 your carrier 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 your carrier cost?

Your carrier 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 Wixzel Voice work with carriers that have no guide here?
Yes, with any carrier that offers a SIP trunk with IP allowlisting (or username and password authentication) and a configurable destination for inbound calls. The two settings are the same everywhere; only the names each carrier gives them change.
My carrier answers 408 Request Timeout. What do I change?
Set send_plus to false on the trunk with PATCH /v1/sip-trunks/{id}. Many wholesale carriers cannot parse a leading + in the request URI: they accept the INVITE, fail to route it and time out. Setting a dial_prefix implies the same, because a tech prefix is matched literally and the + is dropped.

Other carriers