Per-minute and per-call cost of the recommended cascaded stack, the managed-platform comparison, and the build-vs-buy break-even. The non-obvious result: the LLM is ~10% of cost and is not the thing to optimize.

Reference Call

All figures normalize to a 3-minute inbound call:

  • ~12 conversational turns
  • agent speaks ~1.1 minutes of the 3
  • 1,000 characters of TTS output (at ~900 chars/min of speech)
ComponentVendor$/min
TelephonyTwilio (inbound 0.0044)$0.0129
STT + endpointingDeepgram Flux$0.0065
TTSDeepgram Aura-2$0.0100
LLMClaude Haiku 4.5 + prompt caching$0.0032
Total$0.0326/min
Per 3-min call$0.098

Vendor selection rationale lives in voice-agent-telephony-carriers-2026-07-21, voice-agent-stt-vendor-landscape-2026-07-21 and voice-agent-tts-vendor-landscape-2026-07-21.

The LLM Is Not the Driver

The LLM is ~10% of cost. TTS costs 3–5x more. Optimize TTS, not the model.

Haiku 4.5 with prompt caching: 0.0032/min. Prompt caching cuts LLM cost by 65% — the system prompt, tenant config, and tool schemas are identical across all 12 turns of a call and across every call for that tenant.

Cost share of the $0.0326/min:

ComponentShare
Telephony~40%
TTS~31%
STT~20%
LLM~10%

This inverts the usual instinct. Reaching for a cheaper or smaller LLM saves at most ~$0.003/min while degrading the product; shaving TTS or renegotiating carrier rates moves 3–4x more money.

Corollary — speculative LLM dispatch is nearly free

[[voice-agent-stt-vendor-landscape-2026-07-21#speculative-llm-dispatch|Flux EagerEndOfTurn speculative dispatch]] costs 50–70% additional LLM calls to buy back 150–250ms of latency. Applied to a component that is 10% of cost, that’s a ~7% total cost increase for a ~200ms latency win. Trivially worth it. This is only true because the LLM is cheap — it would be a bad trade if the cost shares were reversed.

Managed Platform Comparison

Platform$/minΔ vs $0.0326 DIY
DIY (this build)$0.0326
Pipecat Cloud~$0.040 – 0.058+23% to +78%
LiveKit Cloud~$0.045+38%
Retell$0.073 – 0.088+124% to +170%
Vapi$0.085+161%
ElevenLabs Agents$0.10 – 0.13+207% to +299%
Bland$0.11 – 0.14+237% to +329%

The premium buys less control, not more

See voice-agent-managed-platform-control-surfaces-2026-07-21 — no managed platform lets you host a custom VAD, and only Vapi and Telnyx expose onNumberSeconds. You pay +161% for a smaller control surface.

Also excluded on architecture grounds: Twilio ConversationRelay at $0.07/min on top of voice minutes (~5.5x DIY), which is text-only and exposes no raw audio at all — see Twilio ConversationRelay — AVOID.

Build vs Buy

Break-even vs Vapi: ~600,000 minutes ≈ 200,000 three-minute calls

Assumption: 8 engineer-weeks (~$30k) to build the Rust pipeline.

  • Saving vs Vapi: 0.0326 = $0.0524/min
  • 0.0524 ≈ 572,000 minutes → ~600k minutes ≈ 200,000 calls

For Agents

Read the break-even honestly: 600k minutes is a lot of calls. On pure per-minute arithmetic, buying is cheaper until real scale. The build case does not rest on cost — it rests on capability:

  • The 480ms orchestration residual is unreachable on any managed platform.
  • Custom VAD / per-state endpointing is unreachable on any managed platform.
  • Vapi shipped ~19h of call-affecting degradation in 10 weeks and runs a weekly release channel.

Cost is the tiebreaker, not the argument. If the product could be built on Vapi and be good, the arithmetic would say build on Vapi.

Scaling Notes

  • Costs are linear in minutes, with no meaningful fixed component beyond $1.15/mo per Twilio number. There is no volume cliff that changes the shape.
  • Concurrency, not cost, is the ceiling. ElevenLabs caps at 15 concurrent even at $990/mo; Deepgram gives 45–60 self-serve. You will hit a concurrency wall long before per-minute cost becomes the problem.
  • OpenAI Realtime cost scales with conversation length (full context re-sent each turn), which is why its observed range is $0.073–0.123/min rather than a single figure — see Cost Is No Longer the Argument.

Open Item

Deepgram pricing column order is unconfirmed

Two fetches of the Deepgram pricing page disagreed on which column is Streaming and which is PreRecorded. The 0.0100 (Aura-2) figures above depend on reading that table correctly. [conflicted] — confirm before committing the model. Also unresolved: Hume Octave 2 pricing, where sources contradict on a claimed 3.3x figure.

Sources

  • Twilio, Deepgram, Anthropic pricing pages [vendor] — Deepgram columns [conflicted]
  • Vapi, Retell, Bland, ElevenLabs Agents, LiveKit Cloud, Pipecat Cloud pricing pages [vendor]
  • Anthropic prompt caching documentation — 65% reduction basis [vendor]