SignalWire SIP call-in setup
Set up SignalWire SIP-over-WSS for the experimental VDO.Ninja phone call-in panel.
SignalWire is currently the most direct bring-your-own provider option for VDO.Ninja's browser-side SIP call-in panel. It supports SIP over secure WebSockets, which lets the browser register as a SIP endpoint without running your own PBX.
Last reviewed: July 9, 2026.
This is experimental. Phone callers are mixed into the director/host audio and do not yet appear as normal guest tiles with full scene controls.
What this creates
The call path is:
A phone caller dials your SignalWire number.
SignalWire routes the call to a SIP endpoint in your SignalWire Space.
The VDO.Ninja director page registers to that SIP endpoint over
wss://.VDO.Ninja answers the call in the browser.
VDO.Ninja mixes the caller into the room and sends a mix-minus return feed back to the caller.

Cost notes
Check SignalWire's current pricing before buying numbers. At the time this guide was written, SignalWire's public voice pricing listed local numbers at a low monthly cost and usage priced per minute for PSTN, SIP, and WebRTC legs. Prices and country availability can change.
Useful references:
1. Create a SignalWire Space
Create or open a SignalWire account, then create a Space. Your Space has a SIP domain similar to:
The exact Space name and SIP domain are shown in the SignalWire dashboard.
2. Create a SIP endpoint
In the SignalWire dashboard, create a SIP credential or SIP endpoint for VDO.Ninja.
Use a dedicated credential for this purpose:
Username
vdo-callin
Password
Use a strong generated password
Caller ID
Your show name or phone number
Encryption
Required, if offered
Do not use your SignalWire project API token as the SIP password. The browser only needs the scoped SIP endpoint credential.
3. Buy or route a phone number
Buy a voice-capable number in SignalWire, or use an existing number that can route into SignalWire.
Route inbound calls from that number to the SIP endpoint you created. The exact dashboard wording can change, but the goal is:
If you are using a SignalWire XML/SWML/Call Flow style route, the route should dial the SIP endpoint. For example, a compatibility XML style route would be conceptually:
Use the current SignalWire dashboard/docs for the exact routing UI.
4. Start VDO.Ninja
Open the director page with the experimental call-in panel:
If the deployed version does not yet include the SignalWire label, use the generic SIP mode instead:
In the panel, enter:
SIP WebSocket URL
wss://your-space.sip.signalwire.com
SIP URI
sip:vdo-callin@your-space.sip.signalwire.com
Auth username
The SIP endpoint username, such as vdo-callin
Password
The SIP endpoint password
Display name
Optional label, such as VDO.Ninja
Leave Register for incoming calls enabled. Enable Auto-answer incoming calls only after testing.
Click Connect. The status should show that the SIP account registered.
Field meanings
The SIP WebSocket URL is the secure WebSocket endpoint the browser connects to. It starts with wss://. It is not the same thing as the SIP address.
The SIP URI is the callable SIP address for the endpoint, usually formatted like sip:username@your-space.sip.signalwire.com.
The Auth username is the SIP credential username. In many setups it matches the username part of the SIP URI, but some providers let these differ.
The Password is the SIP endpoint password only. Do not enter a SignalWire project token or account-level API token here.
The Dial target is used only for outbound calls from the VDO.Ninja panel. For SignalWire, a normal phone number such as +15551234567 is converted to a SIP target on the same domain.
5. Test before going live
Join the VDO.Ninja room as director/host.
Join as a normal guest from another browser or device.
Start the SignalWire call-in panel and confirm it registers.
Call the SignalWire number from a regular phone.
Answer the incoming call in the panel.
Confirm the VDO.Ninja guest hears the phone caller.
Confirm the phone caller hears the host and VDO.Ninja guest.
Confirm the phone caller does not hear a delayed copy of themselves.
Useful parameters
&callin=signalwire
Opens the call-in panel in SignalWire/SIP mode.
&callin=sip
Opens the generic SIP/PBX panel.
&sipwss=wss://your-space.sip.signalwire.com
Pre-fills the SIP WebSocket URL.
&sipuri=sip:vdo-callin@your-space.sip.signalwire.com
Pre-fills the SIP URI.
&sipuser=vdo-callin
Pre-fills the auth username.
&siptarget=+15551234567
Pre-fills the outbound dial target.
&callinoutput=DeviceName or &sipoutput=DeviceName
Routes the local caller monitor to a named output device when the browser supports it.
&sipauto=1
Connects automatically when the page loads.
&sipautoanswer=1
Answers incoming calls automatically.
Do not put the SIP password in the URL.
The panel can optionally remember the SIP profile in this browser. If you enable Remember password on this browser, the password is saved in this browser's local storage. That is a convenience feature for a trusted production machine, not a secure vault. Do not use it on shared computers.
Troubleshooting
SIP registration fails
Wrong WSS URL, SIP URI, username, password, or SignalWire endpoint settings.
Browser says the WebSocket URL is invalid
The URL must start with wss://, not sip:, http:, or ws:.
Phone call never reaches VDO.Ninja
The SignalWire number is not routed to the SIP endpoint, or the VDO.Ninja page is not registered.
Caller connects but no one hears them
Check browser microphone permissions, the VDO.Ninja outbound mix, and whether the caller audio track attached in the panel.
Caller hears echo
The return mix includes the phone caller audio. Hang up and check the routing before going live.
When testing is done, release unused numbers or disable routing if you do not want ongoing charges.
Last updated
Was this helpful?