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:
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.
For detailed instructions on how to create a domain application, please follow the SIP Domain Applications guide.
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.
If you are using SWML to handle incoming calls, you will need to:
To address both of the steps above, we will need to create an SWML script.
The following is a simple example of an SWML script that answers the call and plays a TTS message:
If you are using a Call Flow to handle incoming calls, you will need to:
In the below example, we have a Call Flow that answers the call and plays a TTS message.

To handle incoming calls using a RELAY Application, you will need to:
office as an example.office topic/context and then do something with them.In this example we’re creating a Client and tying it to the office context.
Then, we tell it to listen for call.received events, and when a new call comes
in we answer it and say “Hello! This is a test call.” to the caller.
To learn more about what you can do with RELAY, have a look at our SDK documentation.
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 Calling API or Realtime SDK using the SIP URL, SIP username, and SIP password. Let’s look at some examples so you can see what we’re talking about!
To create an outbound call using the Calling API with curl, you can use the Create a Call endpoint with the following format:
In the params you can specify a url that points to an SWML script, or you can pass a swml key with the SWML script directly.
To create an outbound call using SWML, you can use the following format:
To create an outbound call using a Call Flow, you can use the Forward to Phone node to dial out to a SIP endpoint:

The RELAY SDK makes dialing out to a SIP endpoint simple:
If you are interested in BYOC and need additional assistance getting started, reach out to support@signalwire.com! One of our support technicians can make sure everything gets squared away so you can get up and running in no time.
If you would like to test this example out, create a SignalWire account and Space.
Please feel free to reach out to us on our Community Discord or create a Support ticket if you need guidance!