# SIP, Stream or Relay?

> Compare SIP, Media Streams and Conversation Relay for connecting an AI voice agent to Indian phone numbers on Edesy - what you build, who runs the speech stack, and which to pick.

Source: https://edesy.in/docs/voice-api/streaming/choosing-sip-stream-or-relay

Pick **SIP** if your agent already runs on a SIP-capable platform such as LiveKit Cloud, Vapi, Retell, Bolna or Dograh. Pick **Media Streams** if you run your own audio pipeline, for example in Pipecat, and want raw PCM over a WebSocket. Pick **Conversation Relay** if you only want to write the LLM logic and let Edesy do speech recognition, speech synthesis and barge-in.

## Comparison

| | SIP | Media Streams | Conversation Relay |
|---|---|---|---|
| What your side receives | A SIP call (signalling + RTP audio) | WebSocket, raw L16 PCM mono, 8 or 16 kHz | WebSocket, JSON text |
| What you send back | RTP audio | Binary PCM frames + `killAudio` / `disconnect` | `text`, `play`, `sendDigits`, `language`, `end` |
| Speech recognition | Your platform | You | Edesy |
| Speech synthesis | Your platform | You | Edesy |
| Voice activity detection and barge-in | Your platform | You | Edesy (`interruptible`, `min_bargein_word_count`) |
| DTMF | SIP / RTP | `dtmf` event | `dtmf` message (when enabled) |
| Inbound calls | Yes, SIP target on the number | Yes, `media_stream` target | Yes, `conversation_relay` target |
| Outbound calls | Your platform dials out through an Edesy SIP trunk | `stream_url` on `POST /v1/calls` | Not available today |
| Preflight test | Test call to a saved SIP destination | `POST /v1/stream-test` | `POST /v1/relay-test` |
| Compatible with | LiveKit Cloud, Vapi, Retell, Bolna, Dograh, xAI Grok voice agents, any SIP endpoint | Pipecat (Edesy serializer), custom bots | Bots written for Twilio ConversationRelay |
| Edesy charges | Call minutes | Call minutes | Call minutes plus speech; ask for the rate |
| You pay separately | Your agent platform | Your STT, LLM and TTS vendors | Your LLM |
| Docs | [SIP for AI voice agents](https://edesy.in/docs/sip-trunk-for-ai-voice-agents) | [Media Streams](https://edesy.in/docs/voice-api/streaming/media-streams) | [Conversation Relay](https://edesy.in/docs/voice-api/streaming/conversation-relay) |

## How to decide

1. **Already on a voice-agent platform with a SIP option?** Use SIP. Point the number's inbound target at your platform's SIP URI or a saved SIP destination, and for outbound create an Edesy SIP trunk for the platform to dial through. SIP TLS and SRTP are available on request. See [SIP trunking](https://edesy.in/sip-trunking).
2. **Running Pipecat or your own pipeline?** Use Media Streams. You keep full control of the speech vendors and latency trade-offs.
3. **Want the least code?** Use Conversation Relay. Your server only handles text, and an existing Twilio ConversationRelay bot ports with a URL change.

You can mix them: different numbers in the same workspace can use different targets, and you can change a number's target at any time with [Inbound Routing](https://edesy.in/docs/voice-api/phone-numbers/inbound-routing).

## Numbers for any of them

All three work on Edesy's Indian [virtual phone numbers](https://edesy.in/virtual-phone-number): mobile, landline, toll-free and 92-series, bought self-serve after KYC. See [Search and Buy](https://edesy.in/docs/voice-api/phone-numbers/search-and-buy).
