Nomadiction
04/16/2026, 12:20 AM{
"provider": "byo-sip-trunk",
"name": "Twilio",
"gateways": [
{
"ip": "myfqdn.pstn.twilio.com"
}
],
"outboundAuthenticationPlan": {
"authPassword": "...",
"authUsername": "vapi"
},
"outboundLeadingPlusEnabled": true
}
Response
{
"message": "Couldn't validate SIP trunk credential. SIP gateway creation failed.",
"error": "Bad Request",
"statusCode": 400
}
Issue 2: PATCH updates the DB, but not the voice engine (Sticky IP Bug)
* The Workaround: Create the trunk with a dummy numeric IP -> PATCH the gateway to the Twilio FQDN.
* The Bug: The UI/API successfully reflects the updated Twilio FQDN. However, the outbound voice engine remains stuck on the original numeric IP used during creation.
* The Result: Calls fail with 408 Request Timeout because Vapi’s engine ignores the PATCHed FQDN and continues routing SIP signaling to the dummy IP.**
And before you ask, YES, I have put Vapi ips in Twilio's allowlist and the credential as wellChiranjeet Mishra
04/16/2026, 11:34 AM{
"inboundEnabled": false
}
This marks the gateway as outbound-only, which allows hostname-based gateways like [myfqdn.pstn.twilio.com](http://myfqdn.pstn.twilio.com)
Best regards, Vapi Support TeamNomadiction
04/16/2026, 12:53 PMNomadiction
04/16/2026, 12:54 PMNomadiction
04/16/2026, 12:56 PMNomadiction
04/16/2026, 1:01 PMNomadiction
04/16/2026, 1:01 PMNomadiction
04/16/2026, 3:38 PM{
"provider": "byo-sip-trunk",
"name": "Twilio-Hybrid-Trunk",
"gateways": [
{
"ip": "myfqdn.pstn.twilio.com",
"outboundEnabled": true,
"inboundEnabled": false
},
{
"ip": "54.172.60.0",
"inboundEnabled": true,
"outboundEnabled": false
},
{
"ip": "54.172.60.1",
"inboundEnabled": true,
"outboundEnabled": false
},
{
"ip": "54.172.60.2",
"inboundEnabled": true,
"outboundEnabled": false
},
{
"ip": "54.172.60.3",
"inboundEnabled": true,
"outboundEnabled": false
}
],
"outboundAuthenticationPlan": {
"authPassword": "...",
"authUsername": "vapi"
},
"outboundLeadingPlusEnabled": true
}Chiranjeet Mishra
04/17/2026, 9:57 AMmyfqdn.pstn.twilio.com
2. twilio routes it to whatever destination number you're calling
3. that number rings
4. if you don't pick up (because you're just testing), your carrier logs it as a missed call and notifies you