Issue
When using Elastic SIP Trunking (ESIPT), customers may try to end an active call through the Twilio REST API (for example, by updating Calls/{CallSid} to Status=completed).
However, this does not terminate the SIP call. The session stays active until the customer’s SIP endpoint or upstream carrier sends a SIP BYE. This behavior is expected and applies to both inbound and outbound Elastic SIP Trunking calls.
Product
Elastic SIP Trunking
Cause
This behavior is expected and is due to a fundamental architectural difference between Elastic SIP Trunking and Programmable Voice.
For Elastic SIP Trunking:
- Twilio does not originate or control the SIP leg in the same way as Programmable Voice.
- Updating the Call resource via the REST API does not cause Twilio to send a SIP BYE on ESIPT calls.
- As a result, ESIPT calls cannot be terminated or controlled via the API; they end only when the customer’s SBC/PBX or the upstream carrier releases the call (BYE, timeout, max duration).
Resolution
No configuration changes are required. This is expected behavior for Elastic SIP Trunking.
To terminate an ESIPT call, a SIP BYE must be sent to release the session from either:
- The customer’s SBC, PBX, SIP gateway, or
- The upstream SIP carrier