Call transfer error: participant does not exist (Exotel)

This question originally came up in our Slack community and the thread has been consolidated here for long-term reference.

I’m getting this error when doing call transfer with Exotel:

TwirpError(code=not_found, message=twirp error unknown: participant does not exist, status=404)

I’m using LiveKit Cloud with Exotel as my telephony provider. How can I fix this?

The “participant does not exist” error generally means the number you are calling does not exist or there’s an issue with how the transfer is being handled.

Important for Exotel users: Call transfer with Exotel requires using Exotel’s own API, not LiveKit’s transfer_sip_participant. Exotel does not currently have a direct API for call transfer - they recommend using their outbound API to connect two numbers.

For IP allow-listing, Exotel needs the trunk source IPs. Use DNS-based allow listing:

For static IPs (US and India):

Note: Many telephony providers have restrictions on forwarding. Check your provider’s account permissions.