Twilio errors · 2026

Twilio browser calling errors 31000–31208: what a rep can fix and what the dialer must

Last updated September 4, 2026

Every browser dialer built on Twilio runs the same Voice SDK, so the errors a rep sees are the same whichever product is on top. Twilio documents them for developers. This is the rep's version: which code means “click Allow”, which means “turn off the VPN”, and which means “the dialer has to fix this and reloading only hides it”.

The short answer

31208 is the microphone: allow it in the address bar and reload. 31205 and 31204 are the calling token: reload once, and if it comes back the dialer is not refreshing tokens. 31005 and 31003 are the network: no VPN, stable connection, port 443 open. 31002 and 31000 need the Console debugger to say why. None of them are your Twilio balance or your number.

The codes, who owns the fix, and the fix

CodeMeaningWhose fixWhat to do
31208 / 31401Microphone deniedRepAddress-bar padlock → Microphone → Allow → reload. If no prompt appears, allow the browser in the OS privacy settings.
31205Token expiredDialer (rep: reload)Reload once. A dialer that refreshes tokens on tokenWillExpire never shows this; report it if it recurs.
31204Token invalidDialerThe dialer issued a bad token, usually a wrong API key or calling-app SID after a Twilio reconnect. Reconnect Twilio in the dialer settings.
31005WebSocket closedRep / ITStable network, no VPN or proxy in the path, outbound TCP 443 to Twilio allowed. The dialer should reconnect; reload if stuck.
31003Connection timeoutRep / ITNetwork too slow or blocked to reach Twilio. Retry on a clean connection; check DNS and firewall.
31002Connection declinedDialerTwilio refused the call setup. Check the Console debugger: often a calling-app misconfiguration or a destination refused by another rule (13227, 13225).
31009No transport availableRepThe browser lost its connection to Twilio entirely. Reload; check the network.
31000General errorBothRead the underlying cause in Console → Monitor → Debugger at the time of the call, then apply the row that matches.

Codes per Twilio's Voice SDK error reference, read September 2026. The 31xxx range is the browser side; errors in the 13xxx and 21xxx ranges (geo permissions, caller ID, blocked calls, invalid numbers) come from Twilio's side after the browser has connected and have their own pages below.

The token errors are the dialer's fault, not yours

The browser proves who it is to Twilio with an access token the dialer mints from an API key on your Twilio account. Tokens live about an hour. A dialer that mints one when the page loads and never again will work for an hour and then fail every call with 31205 until someone reloads, which users read as “Twilio disconnected”. The SDK announces expiry in advance with a tokenWillExpire event; a dialer that listens for it and swaps in a fresh token never shows the error. DialSheet does that, and also recovers from Twilio's 20101 and 20104 token errors without a reload. If you see 31205 more than once a day on any dialer, it is a product bug, and the fix is a support ticket, not a habit of reloading.

The network errors: what actually has to be open

“No error, but they can't hear me”

One-way audio with no code is almost always an input-device problem: the browser is using the laptop mic while the headset is muted, or a Bluetooth headset registered as output only. Check the browser's site settings for which microphone is selected, unplug and replug a USB headset, and prefer wired over Bluetooth for a shift of calls. If the prospect hears you and you hear nothing, the output device is wrong in the same place.

A dialer that refreshes tokens and names the error on screen.

DialSheet runs in the browser on your own Twilio at ~$0.014/min, refreshes calling tokens before they expire, and shows the Twilio code next to the lead when a call fails. Free for one person, $29 per 3 seats. No Twilio? A managed line is $49/month.

Start dialing

Questions people actually ask

What does Twilio error 31208 mean and how do I fix it?

31208 is "User denied access to microphone": the browser asked for the mic and the answer was no, or a previous no was remembered. Fix: click the padlock or site-settings icon in the address bar, set Microphone to Allow for the dialer's site, then reload the page and accept the prompt. If the prompt never appears, the operating system is blocking the browser's microphone access: on macOS, System Settings, Privacy and Security, Microphone; on Windows, Settings, Privacy, Microphone. On the newer Voice SDK the same failure is reported as 31401.

What does Twilio error 31005 mean?

31005 is a connection error: the WebSocket the browser keeps open to Twilio's signalling servers closed unexpectedly. From a rep's chair the causes are a network change mid-call (Wi-Fi to hotspot, laptop lid), a VPN or corporate proxy that blocks or inspects outbound TCP port 443 to Twilio, or DNS trouble. Fix: reconnect to a stable network, disable the VPN for the dialer, and if it recurs on an office network ask IT to allow outbound 443 to Twilio's voice signalling hosts. The dialer should reconnect on its own; if the page is stuck, reload.

Why does my browser dialer say the token has expired (31205)?

Browser calling authenticates with a short-lived access token issued by the dialer, typically valid for an hour. If the dialer does not refresh it before it expires, every call fails with 31205 (expired) or 31204 (invalid) until the page is reloaded. Reloading fixes it once; a dialer that refreshes tokens automatically fixes it permanently. DialSheet refreshes the token on Twilio's tokenWillExpire signal and recovers from 20101 and 20104 without a reload, which is why a leads page left open through a training session still dials afterwards.

What are errors 31000, 31002 and 31003?

31000 is the general SDK error; the detail is in the Twilio Console debugger. 31002 is "connection declined": Twilio refused to set the call up, usually because the calling app or token is misconfigured on the dialer side, or the destination was refused by a rule such as geo permissions, which shows separately as 13227. 31003 is a connection timeout: the browser could not reach Twilio in time, which is a network problem at your end or a VPN in the path. For all three, the first move is the same: reload, retry on a clean network, and if it persists send the exact code and the time of the call to whoever runs the dialer.

Does a VPN break Twilio browser calling?

Often. The audio travels as UDP media to Twilio's nearest edge and the signalling over a WebSocket on port 443; VPNs and inspecting proxies add latency, break the WebSocket, or drop the media path, producing 31005 mid-call or one-way audio. If company policy requires a VPN, ask IT to split-tunnel the dialer's domain and Twilio's voice hosts. A rep abroad is better off on a plain fixed-line connection than on a VPN "to look local".

What headset and connection does browser calling need?

A wired USB headset, a wired or strong Wi-Fi connection, Chrome or Edge, and the dialer tab left in the foreground. The bandwidth per call is small; what breaks calls is jitter and packet loss, which is why mobile hotspots and crowded café Wi-Fi produce choppy audio and 31005 disconnects. Bluetooth headsets add a little delay and occasionally register as the wrong input device, which surfaces as "no audio" rather than an error code.