SIP BYOC (Bring Your Own Carrier)


Bring Your Own Carrier (BYOC) allows SignalWire users to retain their own carriers for connectivity instead of the vendors that we partner with. This allows you to use any carrier you want while still utilizing the powerful programmatic control for SIP from SignalWire!

This might be a good fit for you if

  • You like your current carrier but want to use our APIs to enhance your call flow
  • You want international origination from a country we don't yet support
  • The number cannot be ported into SignalWire
  • You want to keep control of the number rather than port it to SignalWire

Inbound BYOC

If you would like to do inbound BYOC (i.e. send your carrier traffic to SignalWire), you will need to create a domain application. Domain Apps allow you to send SIP traffic to a custom domain and use SignalWire APIs to manage the incoming request. You can do this under SIP -> Domain Apps -> Create a Domain App, or via the Domain Apps API.

You can select to handle using Relay or using LaML Webhooks (AKA Compatibility API/XML). You can also dial another SIP endpoint in both Relay and Compatibility XML!


Whitelisting IPs

It's VERY important to whitelist the IPs that you want to allow through - if you do not select this option, anyone who has the URL could send traffic to your custom domain app.

Once you are done creating the domain app, you can test by directing the traffic from your SIP endpoints to the custom domain.

Outbound BYOC

If you are using BYOC to do outbound calls from SignalWire, you will need a SIP URL from your carrier that we can use to route calls to the right SIP trunk. Once you have that, you can create a call using the Compatibility API or Relay using the SIP URL, SIP username, and SIP password.

Compatibility API Outbound Call example

curl https://<YOURSPACE><YOURACCOUNTSID>/Calls.json \
  -X POST \
  --data-urlencode "Url=" \
  --data-urlencode "sip:"YOUR SIP URL" \
  --data-urlencode "From=+15550011222" \
  --data-urlencode "SipAuthUsername=user" \
  --data-urlencode "SipAuthPassword=pass" \
  -u "YourProjectID:YourAuthToken"

Relay API Outbound Call example

async function main() {
  const dialResult = await client.calling.dial({
    type: 'sip',
    from: 'sip:[email protected]',
    to: 'sip:[email protected]',
    timeout: 30

  if (dialResult.successful) {
    const { call } = dialResult


How to Get Started

If you are interested in BYOC, reach out to [email protected] to get started! One of our Account Executives can make sure everything gets squared away so you can get up and running in no time.

Check out our guide on how to integrate with Thinq as your carrier!

Sign Up Here

If you would like to test this example out, you can create a SignalWire account and space here.

Please feel free to reach out to us on our Community Slack or create a Support ticket if you need guidance!

Did this page help you?