A voice agent costs the sum of four meters running at once: the phone leg, speech-to-text (STT), the LLM, and text-to-speech (TTS). For one realistic call profile and the prices I read on 2026-10-09, that came to about 6.5 to 7 US cents per minute with a small LLM, and about 12.6 cents with a larger LLM and no prompt caching. More than two thirds of the cheaper stacks was the outbound India phone call itself.
Below is the script, its output for three stacks, the exact prices with where they came from, and how to change the assumptions. All prices are USD. I deliberately left the rupee conversion as an input, because I did not fetch an exchange rate.
Which prices go into the calculator?
Read from vendor pages on 2026-10-09. Vendors change these, so check the live pages.
| Item | Price used | Source page |
|---|---|---|
| STT, Deepgram Nova-3 streaming, monolingual | $0.0048 per minute | deepgram.com/pricing (page calls streaming rates limited-time promotional) |
| TTS, Deepgram Aura-2 | $0.030 per 1,000 characters | deepgram.com/pricing |
| TTS, ElevenLabs v3 Conversational | $0.04 per 1,000 characters | elevenlabs.io/pricing/api |
| LLM, Claude Haiku 5.5 (prompts up to 100k tokens) | $0.10 input, $0.50 output, $0.01 cache read per million tokens | platform.claude.com pricing docs |
| LLM, Claude Sonnet 5.5 | $2 input, $10 output, $0.10 cache read per million tokens | platform.claude.com pricing docs |
| Telephony, Twilio India outbound to mobile | $0.0496 per minute | twilio.com voice pricing, India |
| Platform, ElevenLabs agents | $0.08 per minute base rate | elevenlabs.io/pricing/api |
What I could not get: Indian provider rates. Vobiz's public pricing page showed US rates only, and Twilio's India page did not list an inbound rate. If you use another carrier, replace the telephony line with your quote.
The script
It simulates a call turn by turn. The system prompt is re-sent every turn and the context grows with each exchange, which is how chat-style LLM calls behave. With caching on, everything before the newest user text is billed at the cache-read rate. Agent output tokens are estimated as characters divided by four, a rough rule of thumb that is worse for Hindi; see tokens per word in Hindi, Tamil and Bengali.
def call_cost(minutes, agent_talk_share, turns_per_min, system_tokens, tok_per_user_turn,
chars_per_min_speech, tts_price, llm_in, llm_out, llm_cache, cached, stt_price, tel_price):
turns = int(minutes * turns_per_min)
agent_chars = minutes * agent_talk_share * chars_per_min_speech
agent_out_tokens_per_turn = agent_chars / 4 / turns # ~4 chars per token
ctx = system_tokens
in_tok = cached_tok = out_tok = 0.0
for _ in range(turns):
ctx += tok_per_user_turn
if cached:
cached_tok += ctx - tok_per_user_turn # prefix read from cache
in_tok += tok_per_user_turn # new text at full price
else:
in_tok += ctx
out_tok += agent_out_tokens_per_turn
ctx += agent_out_tokens_per_turn
llm = in_tok / 1e6 * llm_in + cached_tok / 1e6 * llm_cache + out_tok / 1e6 * llm_out
stt = minutes * stt_price # STT billed on call duration
tts = agent_chars / 1000 * tts_price # TTS billed on spoken characters
tel = minutes * tel_price
return llm + stt + tts + tel
Simplifications to know about: no cache-write premium is charged (the first write costs 1.25 times the input price for a 5-minute cache), no taxes, no number rental, no recording or transcription add-ons, no free minutes, and STT is billed for the full call length although some vendors bill only detected speech. These make the totals slightly optimistic.
What does a 3-minute call cost?
Profile: 3 minutes, the agent speaks 45 percent of the time at 800 characters of speech per minute, 5 turns per minute, a 900-token system prompt, and 25 tokens per caller turn. I ran it on 2026-10-09:
A budget: Haiku 5.5 + Nova-3 + Aura-2 + Twilio IN | cache=off | per min $0.0659 (llm 0.0007, stt 0.0048, tts 0.0108, tel 0.0496)
A budget: Haiku 5.5 + Nova-3 + Aura-2 + Twilio IN | cache=on | per min $0.0653 (llm 0.0001, stt 0.0048, tts 0.0108, tel 0.0496)
B quality TTS: Haiku 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=off | per min $0.0695 (llm 0.0007, stt 0.0048, tts 0.0144, tel 0.0496)
B quality TTS: Haiku 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=on | per min $0.0689 (llm 0.0001, stt 0.0048, tts 0.0144, tel 0.0496)
C smarter LLM: Sonnet 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=off | per min $0.0820 (llm 0.0132, stt 0.0048, tts 0.0144, tel 0.0496)
C smarter LLM: Sonnet 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=on | per min $0.0706 (llm 0.0018, stt 0.0048, tts 0.0144, tel 0.0496)
The pattern: the phone leg is about three quarters of stack A. The LLM is a rounding error with Haiku. Upgrading TTS from Aura-2 to ElevenLabs adds 0.36 cents a minute in this profile. Upgrading the model to Sonnet adds about 1.25 cents without caching.
When does the LLM become the big cost?
Change the profile to a long call with a long prompt: --system-tokens 4000 --minutes 6 --turns-per-min 6.
A budget: Haiku 5.5 + Nova-3 + Aura-2 + Twilio IN | cache=off | per min $0.0681 (llm 0.0029, ...)
A budget: Haiku 5.5 + Nova-3 + Aura-2 + Twilio IN | cache=on | per min $0.0655 (llm 0.0003, ...)
C smarter LLM: Sonnet 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=off | per min $0.1264 (llm 0.0576, ...)
C smarter LLM: Sonnet 5.5 + Nova-3 + ElevenLabs TTS + Twilio IN | cache=on | per min $0.0728 (llm 0.0040, ...)
Now caching cuts the Sonnet stack's LLM cost from 5.8 cents to 0.4 cents per minute. That is the one case where reading how prompt caching works on the Claude API pays for itself. For broader token arithmetic, LLM API cost per 1,000 requests uses the same method on chat workloads.
How should you read these numbers?
- Telephony is the line you negotiate. It dominated the cheap stacks. Compare carriers on real India routes, billing increments (per second or per minute) and minimum charges. A per-minute billing increment rounds a 20-second call up to a full minute, which can change the economics of short outbound calls a lot.
- Cost per answered call beats cost per minute. Outbound campaigns pay for ringing, voicemail and short hang-ups. Use cost per completed conversation.
- Platform fees are a different shape. A flat per-minute platform rate is easy to budget. A build-your-own stack is cheaper per minute at volume but costs engineering time. I did not model engineering time. Deepgram's pricing page also lists Voice Agent API tiers between $0.050 and $0.163 per minute of connection time on pay-as-you-go (2026-10-09, per the page as summarised); I did not check what each tier includes, so it is not in the comparison.
- Language changes the TTS and LLM lines. Hindi and other Indian languages usually mean more tokens per word and sometimes different TTS pricing. Re-run with your own character counts.
Which voice vendor should you try first?
For naturalness, listen to samples in the language you need before comparing prices; I did not run a listening test, so I can't rank any vendor's voices. ElevenLabs belongs on the shortlist because it sells both TTS and an agents product, and its docs describe that product as coordinating speech recognition, a language model, speech synthesis and a turn-taking model, which helps if you do not want to assemble parts. Some links on this page are affiliate links; they cost you nothing and I only link tools I'd mention anyway. ElevenLabs is not the cheapest TTS line in the table above, and the per-minute agent rate adds to your bill, so test whether the quality gain matters on a phone line where audio is compressed anyway. Deepgram's Aura-2 is cheaper per character in my table. For the compliance side of recording calls, see call recording consent and AI disclosure in India. See the architecture post for how the parts connect, and AI model pricing for LLM comparisons.
How do you run it for your own numbers?
Save the script as cost.py and run:
python3 cost.py --minutes 4 --talk-share 0.5 --turns-per-min 6 --system-tokens 1500 --inr-per-usd 83.5
Replace 83.5 with the rate on the day you run it. Then swap the PRICES dictionary values with your vendor quotes. Keep the dates in a comment next to each price. Prices drift, and a calculator with undated numbers misleads you six months later.
What I did not verify
I did not place calls or measure real token usage or billed minutes. Token counts per turn, speech rate and talk share are assumptions. The ElevenLabs page gave a list of tiers but not a mapping to plan names, so I used only the base per-minute rate. Twilio's page did not state a currency code, and I treated its dollar figures as USD. Several vendor pages were read through a summarising fetch, so check the live page before you budget.



