You have a backend, a customer table, and a requirement from operations: call every customer whose delivery failed, today, from a number they will actually pick up. Doing that on desk phones or a hardware PBX is a months-long project. Doing it with a voice call API is an HTTP request. The catch is that India is its own telecom market, with its own regulator, its own consent rules, and its own reasons why a provider that works in the US struggles here. This guide explains how voice call APIs work in India, what TRAI and DND rules mean for your traffic, how pricing is structured, how the main providers compare, and how to place your first call through Exotel’s voice platform in about five minutes.
A voice call API lets your application make, receive, and manage phone calls over HTTP, without owning telecom infrastructure. In India, calls run on licensed operator networks and must respect TRAI’s consent and DND rules. Exotel’s voice APIs carry 40M+ daily voice transactions on Indian infrastructure, with virtual numbers, IVR, recording, and real-time streaming.
What is a voice call API?
A voice call API is a programmable interface that turns phone calls into software objects. Your code sends an HTTP request; the platform dials the numbers, bridges the call on the public telephone network (PSTN), and reports back what happened through webhooks and JSON responses. You never touch SIM cards, PRI lines, or carrier contracts.
It helps to separate three things developers often conflate. A voice call API controls calls from your application (dial, bridge, record, route). A SIP trunk is a lower-level pipe that carries your own VoIP traffic to the phone network. A contact centre platform is a finished application for agents. If you are writing code that decides who gets called, when, and what happens next, the API is your layer, and the other two can sit beside it later.
The practical difference from rolling your own telephony shows up in the contract you program against. With Exotel’s calling API, a call is one authenticated POST request with three required fields, a documented rate limit of 200 requests per minute, and a JSON response carrying a call identifier you can store, poll, and reconcile against webhooks. That is the entire integration surface: request, response, callback. Everything in this guide builds on that primitive. For the vocabulary around it, the programmable voice glossary entry is a two-minute read.
How a voice call API works in India
Every outbound call through Exotel’s connect endpoint follows the same sequence, and understanding it saves you debugging time later:
- Your server sends
POST /v1/Accounts/<sid>/Calls/connectwithFrom,To, andCallerId. - The platform dials the
Fromnumber first. Nothing rings anywhere else yet. - When
Fromanswers, the platform dialsToand bridges the two legs. - Both parties see the
CallerId: a virtual number, not either person’s real number. - Call events land on your
StatusCallbackwebhook, and the final call record settles about two minutes after hangup, including duration and price fields.
Two India-specific details in that flow matter. First, the CallerId must be an ExoPhone, a virtual number leased through Exotel on licensed Indian operator networks. You cannot present an arbitrary mobile number as your caller ID, which is exactly what makes caller identity trustworthy here. Second, From accepts either a phone number in E.164 format (+91…) or a SIP endpoint, so the same API that calls your customer can also ring a browser client or a voice agent.
The endpoint is documented on Exotel’s developer portal, with Mumbai and Singapore API clusters. Keep Indian traffic on the India cluster and your call control stays in-country, which your compliance team will ask about the first time they audit the system.
The compliance layer: TRAI, DND, and DLT
India regulates commercial communication more tightly than most markets, and this section is the difference between a program that scales and a program that gets blocked. The regulator is the Telecom Regulatory Authority of India (TRAI), and its commercial communication rules rest on customer consent and preference.
The mechanism developers hit first is DND (Do Not Disturb), the national opt-out registry. Any subscriber can register by calling or texting 1909, and can block all commercial communication or specific categories. The operational rules, documented in Exotel’s NDNC and DND reference, come down to three behaviours:
- Promotional calls to DND-registered numbers are blocked. No workaround exists, and attempting one risks your sender reputation and your business.
- Transactional and service calls are allowed: OTPs, order updates, account alerts, and service calls to your existing customers survive DND filtering because they are essential communication tied to a relationship the customer already has with you.
- DND status changes take effect within seven days, so a list you scrubbed last month is stale. Re-check numbers older than seven days before every campaign.
Exotel enforces this at the platform level: DND numbers are filtered at contact upload and again at campaign execution, and filtered contacts are flagged in reports with explicit status codes such as dnd_filtered and dnd_category_blocked. Your job is honest traffic classification. If you label promotional traffic as transactional to force delivery, you are misusing the exemption, and the penalty is blacklisting.
DLT (Distributed Ledger Technology) registration is the adjacent requirement most voice programs meet through their SMS legs. Commercial SMS in India requires registering your entity and templates on operator DLT platforms, per Exotel’s DLT documentation. Voice flows trigger it the moment you add an SMS follow-up or OTP fallback, so plan the registration once for both channels.
The takeaway: classify every call type you plan to make as promotional, transactional, or service before you write code, scrub against DND on a seven-day clock, and keep consent records. Providers filter; the traffic strategy is yours.
What you can build: seven capabilities mapped to real APIs
Vendor sites describe outcomes. Developers need to know which documented primitive delivers each one. Here is the map, with every row tied to a page on Exotel’s developer portal:
| Capability | The primitive behind it |
|---|---|
| Two-party calling (support callbacks, agent-to-customer) | POST /Calls/connect bridges From and To (docs) |
| Click-to-call from your CRM or app | The same connect call, triggered from a UI event (product page) |
| Number masking (marketplaces, delivery, taxis) | CallerId is always a virtual number, so bridged parties never see each other’s real numbers |
| IVR and call flows | Applets you compose into flows: Greeting, Connect, Passthru, Transfer, SMS, Email |
| Call recording | Record=true on the connect request; the call record returns a RecordingUrl |
| Real-time voice streaming for AI agents | AgentStream: raw PCM audio over WebSocket, unidirectional for transcription or bidirectional for conversational AI (developer guide) |
| Automated campaigns and health checks | Call Campaigns for outbound at scale, Heartbeat for monitoring, ExoVerify for verification flows |
Two of these deserve a second look. Number masking is not a separate product to integrate; it falls out of the caller ID model, which is why marketplaces and logistics companies build it in an afternoon. And AgentStream is the bridge between telephony and voice AI: it streams call audio as linear PCM (8 kHz default, 16 and 24 kHz supported) in roughly 100 ms chunks to your bot server and accepts audio back on the same WebSocket, which is the pattern every phone-based AI agent in India ultimately needs.
How voice call API pricing works in India
Voice API pricing in India is usage-based, and the sticker rate is only one of four components you should model:
- Per-minute usage on calls, metered per leg. A bridged two-party call has two legs, and your effective cost per conversation reflects both.
- Virtual number rental, billed monthly per ExoPhone or equivalent.
- Platform or plan fees, which vary by committed volume.
- Channel add-ons you trigger from voice flows: SMS follow-ups, verification calls, streaming minutes.
Published per-minute rates across the Indian market vary widely by provider, volume tier, and call type, and they change often enough that any number printed here would mislead you within a quarter. Get current rates from Exotel’s pricing page and model them against your real call profile.
The questions that separate an accurate cost model from a surprise invoice: What is the billing pulse (per-second or per-minute increments)? Are unanswered attempts charged? What does a retry strategy cost at your answer rate? What is the number rental, and how many numbers does your calling pattern need? Is billing in INR (your finance team will insist)? What discounts apply at committed volume?
Run the model against a month of real traffic before you commit. Exotel offers a free trial, so the cheapest way to validate both cost and call quality is to run a pilot with production-shaped traffic, not a spreadsheet.
The best voice call API providers in India, compared
Exotel leads for enterprise-scale voice on Indian infrastructure; Twilio fits teams that need one API across many countries; Plivo targets cost-focused global calling; MSG91 and Ozonetel serve Indian SMB cloud telephony; Tata’s Knowlarity and TeleCMI cover business phone systems with API layers. That one-sentence version is honest, and the table below adds the context behind it.
| Provider | Built around | India context |
|---|---|---|
| Exotel | Full-stack customer conversation platform: voice, SMS, WhatsApp APIs | India-first infrastructure, 40M+ daily voice transactions, DND filtering built in, free trial |
| Twilio | Global multi-country CPaaS with broad SDK coverage | Twilio’s own India documentation states outbound calls to India can only be made from international (non-Indian) numbers, and lists domestic India-to-India calling as not available |
| Plivo | Global voice and SMS APIs with volume pricing | Publishes India rates; India presence without a domestic-first platform focus |
| MSG91 | SMB communication suite (SMS-led, voice included) | Indian company, popular with startups |
| Sinch | Global CPaaS with an India-localized voice offering | Enterprise messaging heritage |
| Ozonetel | Cloud contact centre with calling APIs | Indian company, contact-centre-led |
| Knowlarity (Tata) | Cloud telephony for business phone systems | Indian heritage, now part of Tata Communications |
| TeleCMI | Business phone system with click-to-call APIs | Indian company, SMB and mid-market focus |
The Twilio row matters most for evaluation logic. None of that is a criticism of Twilio; it reflects how Indian telecom licensing works for foreign providers. If your callers are in India and your numbers must be Indian, a domestic platform is not a preference, it is the architecture. If your product spans 30 countries and India is one of them, the calculus reverses, and a global provider with an Indian partner underneath may serve you better.
When is Exotel not the fit? If most of your calling is outside India and SEA, or you need to buy numbers in dozens of countries from one dashboard, start global. Enterprise scale on Indian rails is the specific problem Exotel is built for.
Reliability and scale: what to measure before you commit
Every provider claims reliability. Adjectives are not evidence, so here is what to measure during a pilot, and what Exotel publishes so you can hold it accountable:
- Documented rate limits. Exotel publishes its calling-API limit and returns HTTP 429 beyond it. A documented limit tells you exactly how to shape a dialer; an undocumented one tells you to expect surprises. Design your campaign worker around the published number and measure where throttling actually begins.
- Webhook delivery. Fire a few hundred test calls and reconcile
StatusCallbackevents against polled call records. Missing terminal events force you to build a reconciliation job; better to know before launch. - Answer-rate and completion-rate by operator. India’s subscriber base spreads across Jio, Airtel, and Vi, and your connect rates will differ by destination network and time of day. Segment pilot metrics by operator prefix before you promise numbers to the business.
- Latency, if you are building voice AI. Demand measured numbers, not claims. Exotel’s engineering team has published a measured, end-to-end latency breakdown for a voice AI pipeline showing where the milliseconds go; use its method as your benchmark template, and hold every vendor to the same standard of evidence.
- Monitoring hooks. Exotel documents a Heartbeat monitoring API, so you can wire platform health into your own alerting instead of finding out from a customer.
A two-week pilot that measures these five things against production-shaped traffic answers the reliability question with your data instead of anyone’s marketing.
Make your first voice call in five minutes
You need an Exotel account (KYC completed), an ExoPhone virtual number, and the API key, token, and account SID from your dashboard. Then a bridged call is one request:
curl -X POST "https://api.exotel.com/v1/Accounts/$EXOTEL_SID/Calls/connect" \
-u "$EXOTEL_API_KEY:$EXOTEL_API_TOKEN" \
-d "From=+91XXXXXXXXXX" \
-d "To=+91YYYYYYYYYY" \
-d "CallerId=$YOUR_EXOPHONE" \
-d "StatusCallback=https://yourapp.example.com/call-status"
The same call in Python:
import os
import requests
EXOTEL_SID = os.environ["EXOTEL_SID"]
AUTH = (os.environ["EXOTEL_API_KEY"], os.environ["EXOTEL_API_TOKEN"])
resp = requests.post(
f"https://api.exotel.com/v1/Accounts/{EXOTEL_SID}/Calls/connect",
auth=AUTH,
data={
"From": "+91XXXXXXXXXX", # dialed first
"To": "+91YYYYYYYYYY", # dialed when From answers
"CallerId": os.environ["EXOPHONE"], # your virtual number
"Record": "true",
"StatusCallback": "https://yourapp.example.com/call-status",
},
timeout=30,
)
resp.raise_for_status()
print(resp.json())
What happens: your From number rings first; answer it, and the platform dials To and bridges the call, presenting the ExoPhone as caller ID to both sides. The JSON response carries the call Sid (store it), the current Status, and, because Record is on, the call record will include a RecordingUrl. Duration and price fields settle about two minutes after hangup, so reconcile billing-grade data from the final record, not the initial response.
Production notes from the API reference: stay under 200 requests per minute or expect HTTP 429, subscribe to StatusCallbackEvents for answered and terminal so your system reacts to real call outcomes, and use TimeLimit to cap runaway call costs. From here, IVR is the same request pointed at a flow of applets instead of a second number.
How to choose: a 10-point evaluation checklist
Score each provider 1 to 5 on these, weight by what your use case needs, and the decision usually makes itself:
- Indian virtual numbers available, with the number types you need.
- Domestic call termination on licensed Indian operator networks.
- DND scrubbing built into the platform, with visible per-contact filter status.
- Documented rate limits and error semantics (a published 429 policy beats a mystery).
- Webhook coverage for every call state you must react to.
- Recording with retrievable URLs and a retention policy your legal team accepts.
- Real-time audio streaming if voice AI is on your roadmap (WebSocket, PCM formats, bidirectional support).
- INR billing, transparent pulse rules, and rates for your actual volume tier.
- Evidence culture: published measurements and complete API docs, not adjectives.
- A free trial you can run production-shaped traffic through before signing.
Items 3 and 8 are where India-first platforms separate from global ones; items 4 and 9 are where serious engineering organisations show their depth.
Voice call API use cases by industry
The same primitives compose into different systems by industry, and the compliance classification from earlier decides how each one is allowed to behave:
- Fintech and lending: OTP delivery with voice fallback through verification APIs, payment reminders as transactional calls, and agent-to-customer collections calls with recording for audit. Reminder traffic to existing borrowers survives DND filtering; acquisition calling does not.
- E-commerce and logistics: delivery coordination through masked calls, so drivers and customers connect without exchanging real numbers, plus automated order-status calls. This is the number masking pattern from the capability map, and it is why your cab driver never has your actual number.
- Healthcare: appointment reminders and follow-up calls as service communication, with recording governed by your data-retention policy.
- Education: admission counselling callbacks via click-to-call, and fee reminders as transactional traffic to enrolled families.
Match each workflow to its primitive, classify its traffic correctly, and the same connect endpoint you tested above runs all of it.
Frequently asked questions
What is a voice call API?
A voice call API is a programmable interface for making, receiving, and managing phone calls from application code over HTTP. The platform behind it owns the telecom infrastructure and operator relationships; your software controls calls through requests, JSON responses, and webhooks, the same way it consumes any other web service.
How much does a voice call API cost in India?
Pricing is usage-based: per-minute charges on each call leg, monthly rental for virtual numbers, and plan fees that drop with committed volume. Rates vary by provider and tier and change frequently, so model your real call volume against current rates from the provider’s pricing page before committing.
Which is the best voice call API in India?
It depends on where your callers are. Exotel leads for enterprise-scale voice on India-first infrastructure with DND compliance built in. Global platforms such as Twilio or Plivo fit products spanning many countries. Run a pilot with production-shaped traffic and measure connect rates before deciding.
Can promotional calls reach DND numbers in India?
No. Promotional calls to DND-registered numbers are blocked under TRAI rules, and platforms filter them out. Transactional and service calls, such as OTPs, order updates, and account alerts to existing customers, are allowed. Re-scrub contact lists older than seven days, since DND registrations take effect within a week.
Can I use Twilio for domestic calls in India?
Twilio’s own India documentation states that outbound calls to India can only be made from international (non-Indian) numbers, and lists domestic India-to-India calling as not available. Products with India-based callers typically pair with or migrate to a domestic platform for local numbers and in-country termination.
What is number masking and how does it work?
Number masking connects two people through a virtual number so neither sees the other’s real number. In Exotel’s calling API, the mandatory CallerId field is always a virtual number, so every bridged call is masked by default. Marketplaces, delivery fleets, and taxi platforms use it to protect customer privacy.
Where to start
A voice call API in India is one documented HTTP request plus a compliance model you now understand. Classify your traffic, scrub against DND, run the five-minute call above, then pilot two weeks of production-shaped traffic and measure connect rates before you commit. Exotel’s voice platform gives you the India-first rails to do it on, and the free trial is the fastest way to see your own numbers.








