31009: Transport error
VOICE
ERROR
Twilio returns this error when the Programmable Voice SDK cannot establish a transport to send or receive messages. In practice, this usually means the client cannot reach the required Twilio signaling or media infrastructure, or the selected edge does not match the network path available to the SDK.
- Outbound TLS connectivity to the required Twilio signaling gateways on TCP port 443 is blocked, so the SDK cannot establish signaling transport. For mobile SDKs, the client may also be unable to reach the Insights gateway and registration server on TCP port 443.
- UDP connectivity to Twilio media servers on ports 10000 through 60000 is blocked, which prevents the SDK from establishing secure media connectivity.
- The SDK is using Global Low Latency routing, but the upstream DNS resolver, VPN, or network path causes Twilio to select an edge that is not allowed by your network policy or is not the best match for the user's actual location.
- The client is on a restrictive NAT or firewall and does not have TURN connectivity available, so media cannot traverse the network when direct UDP paths are unavailable.
- The deployment uses a Mobile Voice SDK version earlier than 3.x, which requires signaling on port 10194 instead of 443, and that port is closed.
- Allow the outbound destinations and ports required by the Voice SDK you use. Open TCP port 443 to the Twilio signaling gateways and Insights logging endpoints. For mobile SDKs, also allow the registration server on TCP port 443. Allow UDP ports 10000 through 60000 to Twilio media IP ranges for secure media traffic.
- If your network restricts UDP, provide TURN credentials from Network Traversal Service and pass the returned
iceServersto the client so the SDK can relay media over TURN when needed. - Set a specific
edgeinstead of relying on Global Low Latency when users are behind VPNs, use remote DNS infrastructure, or operate on a restricted network that allows only specific Twilio edges. - Upgrade legacy Mobile Voice SDK deployments to version 3.x or later so signaling uses TCP port 443. If you cannot upgrade yet, open TCP port 10194 for those older mobile clients.
- Run a Preflight test before placing calls to verify connectivity and collect diagnostics. Use
Device.runPreflight(token, options)for web applications. Use the mobile Preflight APIs such asrunPreflighton Android,runPreflightTestWithAccessTokenon iOS, orVoice.runPreflightfor React Native.