We are testing an outbound call through LiveKit Cloud and Twilio Elastic SIP Trunking. One controlled test call was rejected at the INVITE stage, before answer, with:
INVITE failed: sip status: 488: 32102 The SDP is not correctly formatted.
We verified these settings in both authenticated dashboards:
- LiveKit outbound transport:
SIP_TRANSPORT_TLS, destination port 5061. - LiveKit media encryption:
SIP_MEDIA_ENCRYPT_REQUIRE(also shown in the call’s Events payload). - Twilio Secure Trunking: Enabled.
- Call recording: Disabled.
- Default SIP codecs; no custom codec list.
- Python Agents SDK 1.7.1; RTC SDK 1.1.15.
The request uses the existing stored outbound trunk:
api.CreateSIPParticipantRequest(
sip_trunk_id="<redacted>",
sip_call_to="<redacted>",
room_name="<redacted>",
participant_identity="<redacted>",
participant_name="Test call",
wait_until_answered=True,
hide_phone_number=True,
)
The agent and room start normally, but no answered call or business conversation occurs. LiveKit’s call analytics show no downloadable PCAP and no negotiated codec. Twilio’s Debugger has only the generic 32102 message; no SDP or response body. We have requested a normal technical support ticket from Twilio as well.
We have not changed encryption settings or retried the call. We do not yet know whether the problem is a codec, SDES crypto attribute, media protocol, or another SDP field, and are not reporting a confirmed broad outage.
How can we obtain a sanitized outbound INVITE SDP, or the specific parser rejection reason, for a failed TLS/SRTP call? Is there a supported private channel to provide a call ID for internal trace lookup when no PCAP is available? Are there known current compatibility issues between LiveKit Cloud’s generated SDP and Twilio Secure Trunking?
Project, Room, Trunk, call, log identifiers and phone numbers have been omitted deliberately. Any raw SDP with crypto keys should be handled privately rather than posted publicly.