← All writing

What an AI voice agent actually costs to run

September 12, 20263 min read

Every voice-AI pitch quotes a per-minute price. Almost none of them tell you what a month actually costs, because the honest answer is "it depends on three things you haven't decided yet": your call volume, your telephony architecture, and — the one nobody prices in — how many of your calls can move to WhatsApp.

I run a voice-AI platform that answers real business calls, and I built a cost calculator so I'd stop redoing this math in spreadsheets. Here's the model behind it.

The anatomy of a billable minute

A cascaded voice pipeline — the architecture I run in production — has three meters running on every minute of conversation:

ComponentPer minuteWho
Speech-to-text$0.0060Deepgram
Language model$0.0033Gemini / Claude-class
Text-to-speech$0.0200Cartesia / ElevenLabs
AI total$0.0293

Notice what dominates: the voice itself. TTS is two-thirds of the AI bill. When people optimize their LLM prompts to save money on a voice agent, they're polishing the cheapest line item.

The alternative is a speech-to-speech model — Gemini Live at roughly $0.037/min, Ultravox at a flat $0.050, GPT Realtime around $0.050 on paper and often more in practice, since it bills audio tokens rather than minutes. I keep choosing the cascaded pipeline anyway: it costs less and you own every layer — swap the voice, tune the prompts, add fallbacks when a provider has a bad day. I've written before about why latency makes this architecture harder than it looks; cost is the consolation prize.

Telephony is where the real decisions live

The AI stack is the same whoever carries the call. The telephony underneath it is a genuine architectural choice:

  • Twilio end-to-end (~$0.030/min + ~$350/mo fixed) — one vendor, best docs, ship this week.
  • Telnyx + IDT Express (~$0.018/min + ~$450/mo) — CPaaS for numbers and failover, wholesale routes for the minutes. The sensible middle.
  • IDT Express + your own SBC (~$0.014/min + ~$750/mo) — direct carrier interconnects behind FreeSWITCH. Cheapest minutes, most ops burden.

Classic infrastructure trade: lower marginal cost buys higher fixed cost. At 100,000 PSTN calls a month, own-SBC wins clearly. At 2,500, Twilio wins. In between, run your numbers.

The WhatsApp trap

Here's the part that invalidates most telephony planning in emerging markets: a WhatsApp call has no per-minute charge at all. It rides the customer's data connection; you pay a ~$0.01 conversation fee and the AI meter — that's it. None of the markets I work in — Pakistan, India, Nigeria, most of South Asia, Africa, and South America — block WhatsApp calling, and India is WhatsApp's largest market on earth.

Which produces a result that surprised me when I first plotted it: at high WhatsApp share, the wholesale-infrastructure option becomes the most expensive. Its $750/month of fixed cost was justified by cheap minutes — and there are barely any billable minutes left. Going WhatsApp-first and building wholesale telephony infrastructure are mutually exclusive strategies. Drag the WhatsApp slider in the calculator from 0 to 100 and watch the winner flip.

One honest caveat: Meta prohibits cold outreach, so the free channel only reaches contacts who opted in. Cold calls stay on PSTN, at PSTN prices.

What I tell clients

  • Below ~5,000 calls/month, architecture barely matters — ship the simplest thing (Twilio) and spend your energy on the agent, not the plumbing.
  • If your customers are on WhatsApp, get the opt-in flow right before you negotiate with a single carrier. Every point of WhatsApp share is worth more than a rate-card discount.
  • Past ~50% WhatsApp share, your bill is mostly the AI stack — and within that, mostly the voice. That's the lever.
  • Re-run the numbers quarterly. Corridor rates and engine prices both move; the calculator takes thirty seconds.

The uncomfortable summary: the per-minute price on anyone's pricing page — mine included — tells you almost nothing. The bill is an interaction between volume, channel mix, and fixed costs, and it changes which architecture is right as you change. That's why it's a calculator and not a table.