On this page
- What actually differs between the four carriers for an AI agent
- How Exotel, Plivo and Vobiz stream call audio
- Published prices, pulses and what to ask for in writing
- What our production calls showed on Plivo and Vobiz
- The Indian rules every carrier enforces: media in India and KYC
- How to choose a carrier for your voice agent
- Sources
What actually differs between the four carriers for an AI agent
All four sell Indian phone numbers and calling, so for an AI agent the useful questions are narrower. How does the caller's audio reach your bot, and in what format? What do you have to do to keep call media in India and pass KYC (know-your-customer) checks? And what does a minute cost, with what rounding? This article answers those from each carrier's public documentation and pricing pages, checked on 24 October 2026, and from our own production calls where we have them.
There are two ways to connect an agent to a carrier. A WebSocket media stream sends the caller's audio as small base64 chunks inside JSON messages to a URL you give it, and plays back the audio you send. A SIP trunk carries the call as SIP signalling plus RTP media into a SIP server such as LiveKit's, which then hands the audio to your agent. Pipecat-style agents usually take the WebSocket route, and LiveKit agents take the SIP route.
A carrier is also a different thing from a voice agent platform, which is where comparisons such as Plivo against Vapi go wrong. Plivo sells numbers and carries the call; Vapi is a platform that runs the agent and needs a telephony provider underneath. Plivo's India guide lists Indian numbers as not compatible with Vapi, because Vapi does not offer SIP termination in India (Plivo, calling in India).
Our stake in this comparison
Sonex Labs voice agents connect to Exotel, Plivo and Vobiz (and Twilio) over their WebSocket media streams, and customers can bring their own account with any of them. Sonex's managed Indian numbers are provided through some of these carriers. We have not integrated Ozonetel, so everything below about Ozonetel comes from public pages, not from our own use. Treat this as a user's notes, not a neutral review.
| Carrier | How an AI agent gets the call audio | Published price for India |
|---|---|---|
| ExotelSource: Exotel Voicebot applet docs; Exotel pricing pages | Voicebot applet: bidirectional WebSocket, 16-bit PCM at 8 kHz by default, 16 or 24 kHz on request. SIP trunking to LiveKit has an official guide. | No per-minute rates on the pricing pages. Contact-centre plans list $70 (XPrime) and $100 (XPro) without a period. Voice streaming priced on request. |
| PlivoSource: Plivo India voice pricing; Plivo audio streaming guide | Audio Stream: bidirectional WebSocket; μ-law at 8 kHz recommended, linear PCM at 8 or 16 kHz available. SIP trunking with India region pinning. | ₹0.38 a minute for domestic calls in and out, 30-second pulse; ₹200 a month per number; audio streaming included. |
| VobizSource: Vobiz voice pricing page | Bidirectional WebSocket JSON stream, 8 kHz μ-law each way (from our integration). | Pricing pages show United States rates only, such as $0.0034 a minute per WebSocket stream. No Indian rates published. |
| OzonetelSource: ElevenLabs and Ringg Ozonetel integration docs | Documented AI routes are a SIP trunk with KYC-verified numbers, one channel per concurrent call (ElevenLabs), or HTTP callbacks plus a stream (Ringg). | The pricing page did not load for us on 24 October 2026; no price quoted here. |
How Exotel, Plivo and Vobiz stream call audio
The three WebSocket protocols look alike, and that is a trap. Each sends a start event, then media events carrying base64 audio, and accepts audio back plus a command to clear the playback queue when the caller interrupts. But the field names, the sample rates and the commands differ, so code written for one carrier plays noise or nothing on another.
Exotel's Voicebot applet sends 16-bit linear PCM at 8 kHz unless you ask for 16 or 24 kHz in the URL (Exotel Voicebot applet). It wants chunks in multiples of 320 bytes, from 3.2 KB upward, a size Exotel labels 100 ms. Plivo recommends 8 kHz μ-law and needs the stream marked bidirectional, with the call kept alive, or the call can drop as soon as it connects (Plivo audio streaming guide). Vobiz sends and expects 8 kHz μ-law in its own JSON shape; we found no public Vobiz streaming specification, so that description comes from our integration.
We keep a separate translation layer, or serializer, for each carrier, even where two look identical today. When one carrier renames a field or changes a default rate, a shared layer would break both at once. Each layer also counts and reports malformed audio frames instead of failing the call on the first bad message, because a phone call is the wrong place to discover that a message format changed.
Clearing audio matters more than any other command for an AI agent. When the caller starts speaking over the agent, the agent has to stop its own audio at once, and the carrier has to drop whatever it has buffered. Exotel supports this through its clear event, and Plivo and Vobiz through clearAudio. Test it on a real call before launch, because an agent that keeps talking after an interruption feels broken whatever its speed. The guide to silent calls and μ-law on Twilio Media Streams covers the stream-format mistakes that apply to all three.
Published prices, pulses and what to ask for in writing
Plivo is the only one of the four whose page answers the basic price questions for India. It lists ₹0.38 a minute for domestic calls in either direction, a 30-second pulse, ₹200 a month for a domestic number and audio streaming at no extra charge (Plivo India voice pricing). The page does not say whether GST is included, so ask before you compare it with a quote that does.
The pulse is the unit a call is rounded up to, and it changes the bill more than the headline rate suggests for short calls. On a 30-second pulse, a 20-second call that never reaches a person is billed as 30 seconds, ₹0.19 at Plivo's rate. On a 60-second pulse the same call is billed as a full minute, ₹0.38, so a campaign full of unanswered or very short calls can cost close to twice as much at the same per-minute price. That is our arithmetic, not a carrier's figure.
Exotel publishes contact-centre plans, XPrime at $70 and XPro at $100 without a stated period, and says voice streaming sits outside those plans and is priced on request (Exotel contact-centre pricing). Its developer FAQ says calls are billed per second after a minimum duration, "typically 1 second or per-pulse as per plan" (Exotel pricing FAQ). Vobiz's voice pricing page shows only United States rates, including $0.0034 a minute per WebSocket stream (Vobiz voice pricing). Ozonetel's pricing page redirected to an address we could not open.
For every carrier, then, ask for Indian rates in writing: per minute in and out, the pulse, number rental, any streaming or concurrency charge and any monthly minimum. A carrier's rate is also only one line of an AI call's cost. The breakdown of AI calling agent cost per minute in India shows how it adds to speech recognition, synthesis, the language model and rounding, and the voice AI cost calculator lets you try your own call lengths.
What our production calls showed on Plivo and Vobiz
Our production logs do not show that either carrier is faster, and we would distrust anyone who claims to know from logs like ours. A server log starts when audio reaches the server and stops when the reply leaves it, so it misses the carrier's network legs and what the caller actually heard. In our data, differences between agents' settings, especially how long each waits before deciding the caller has finished, were larger than any difference between carriers.
Call setup was close on both. From the carrier's WebSocket connecting to our pipeline being ready to speak took a median of 1,048 ms on Plivo (165 calls) and 995 ms on Vobiz (17 calls), with p95s of 1,352 ms and 1,291 ms (Sonex Labs calls, 10 to 24 October 2026). The p95 is the time 95% of calls stayed under. These are our own pipeline's start-up times as much as the carrier's, and the Vobiz sample is small.
Calls that reached the wrong agent
Two incidents are worth knowing about because they could hit anyone. In September 2026, inbound Vobiz media streams sometimes arrived without the URL parameters that tell our engine which agent the call belongs to, about once a day. When that happened, the caller heard a generic English greeting instead of their configured agent.
We now look the agent up by the carrier's call ID, from the record created when the call was answered, and alert when that fallback fires. The cause on the carrier's side was not diagnosed. The general lesson is to log the identifying parameters on every inbound stream and decide in advance what happens when one is missing.
Static between chunks of speech
The second incident was audio quality. When we sent synthesised speech to the call in small pieces as it streamed in, gaps of 100 to 200 ms on the network between pieces came out as comfort-noise static on Vobiz calls. Comfort noise is the faint hiss a phone network inserts during silence so the line does not sound dead.
We now collect each chunk of speech whole before sending it. Neither problem showed up in testing over a browser connection, only on real phone calls, which is the strongest argument for testing a carrier on ordinary phones before launch.
The Indian rules every carrier enforces: media in India and KYC
Whichever carrier you choose, two rules decide whether calls connect at all. The first is that call media must stay in India. Plivo's India guide says TRAI regulations require voice traffic for India calls to be anchored on servers in India, and that calls breaking the rule fail with hangup code 4590. A community thread on LiveKit's SIP repository puts the same point bluntly: Indian SIP trunks "can't send media outside India" (livekit/sip issue 428).
For LiveKit, that means its India-pinned host; for a WebSocket stream, it means the server that receives the audio should be in India too, with the speech and language models close to it. The guide to putting a LiveKit or Pipecat agent on a +91 number gives the settings for each carrier.
The second rule is identity. Plivo requires KYC verification before you rent an Indian number, and its account must sit in the India data region, which cannot be changed after the organisation is created. Exotel's streaming guide says access to its streaming product requires completing KYC, and that its Mumbai instance is needed for some setups, including WebSocket combined with SIP trunking (Exotel streaming quick guide). ElevenLabs' Ozonetel guide likewise requires numbers procured through Ozonetel's KYC process, with one Ozonetel channel for each concurrent call (ElevenLabs Ozonetel integration). Start this paperwork before you write code, because it is usually the slowest step.
Concurrency is the limit people forget to ask about. Exotel's voice FAQ gives default limits of 10 simultaneous calls on its Starter plan and 30 on Growth, both raised on request, and warns that calls beyond the limit are queued or rejected with a busy signal (Exotel voice FAQs). An outbound campaign that dials faster than your channel limit fails quietly, so agree the number before launch.
Numbering rules sit on top. Ordinary geographic numbers, such as the 080 Bengaluru landlines Sonex uses, are not the 140 series that Indian rules require for promotional calls, or the 1600 series for service and transactional calls from banks, insurers and other regulated bodies. The guide to India's 140, 1600 and 1601 number series explains which calls need which, and that obligation is yours whichever carrier you use.
How to choose a carrier for your voice agent
Choose on integration route and paperwork first, price second, and speed only after a fair test. If your agent runs on Pipecat or your own WebSocket server, Exotel, Plivo and Vobiz will all stream audio to it, and the choice comes down to audio format, Indian rates and support. If it runs on LiveKit or another SIP platform, follow the carrier's own SIP guide and pin everything to India.
Exotel also sells contact-centre plans with human agent seats, which matters if your AI agent hands calls to people in the same system. Plivo's published rates make budgeting easiest. Vobiz markets itself to AI voice teams but publishes no Indian rates, and Ozonetel's AI route depends on a partner's integration, so ask both for references from teams running agents at your volume.
For speed, run the same agent with the same end-of-turn pause, speech-to-text and language model on each carrier, from ordinary Indian phones, and record what callers hear. Server logs, including ours, start too late and stop too early to settle it. The same test applies to platforms that bundle numbers: Sonex voice agents, for example, run on shared Indian numbers or on your own carrier account, and both routes deserve a real-phone trial.
Sources
- Exotel Voicebot applet documentationOfficial
- Exotel: quick guide to streaming services (KYC, regions)Official
- Exotel pricing, enterprise contact center (checked 24 October 2026)Official
- Exotel developer docs: pricing and plans FAQsOfficial
- Exotel developer docs: voice API FAQs (concurrent call limits)Official
- Plivo India voice pricing (checked 24 October 2026)Official
- Plivo audio streaming guide for voice agentsOfficial
- Plivo: calling in India with voice agentsOfficial
- Plivo: LiveKit SIP trunking guideOfficial
- Vobiz voice pricing (checked 24 October 2026)Official
- ElevenLabs: Ozonetel integrationOfficial
- Ringg: Ozonetel integrationOfficial
- livekit/sip issue 428: integrating Exotel with LiveKitSecondary
Change log: 24 Oct 2026, First published. Later the same day, rewritten as one continuous guide: removed our measured reply-time medians per carrier (the logs cannot rank carriers, and the page now says so without them), added a pricing section with pulse arithmetic, Exotel's billing and concurrency FAQs, and the Plivo-versus-Vapi distinction; takeaways and FAQs folded into the body




