Methodology & neutrality
Our rules
- Vendor pages only. Every price comes from the vendor's own public pricing page, fetched on the date shown. We do not use third-party blogs, screenshots or sales quotes.
- If we can't verify it, we say so. Pages we couldn't load, prices without units, and "contact sales" plans are marked unverified and never used in "cheapest" figures. Currently 19 of 21 vendor pages are verified.
- List prices, US, pay-as-you-go. No volume tiers, commitments or negotiated discounts. Promotional rates and announced price changes are flagged.
- Native unit first. Each row shows the vendor's own unit ($/hr, $/1K characters, $/1M tokens). The per-minute number is our conversion, and derivations are labeled.
- Neutral by design. No vendor can pay for placement, ranking or wording. Default sort is by price. If we add affiliate links or sponsors, they will be labeled on the page and will never change the order or the numbers. Today every "Try" button is a placeholder with no affiliate program connected.
- Automated freshness. A script re-fetches every source page, hashes the price-bearing text and flags changes for human review. Changes are logged on the changelog.
How we convert to cost per minute
Everything is expressed per call-minute (one minute of a live call), because that is how platforms and carriers bill.
- Speech-to-text, telephony, platforms: billed on the full call. Hourly rates are divided by 60.
- Text-to-speech: billed only while the agent speaks. $/call-min = $/1K chars x (chars per minute of speech / 1,000) x agent talk share.
- LLM: $/call-min = turns/min x (input tokens/turn x input price + output tokens/turn x output price) / 1,000,000, with an optional cached-input share.
- Speech-to-speech: per-minute where the vendor publishes it. Token-only audio models without a published tokens-per-minute figure get no per-minute number.
| Assumption | Default | Why |
|---|---|---|
turns_per_min | 4 | LLM calls per call-minute (one per caller utterance). Adjustable in the calculator. |
input_tokens_per_turn | 2000 | System prompt + tools + running conversation history re-sent on every turn. 2,000 is a short prompt; long prompts and late-call history push this well above 5,000. |
output_tokens_per_turn | 60 | ~60 tokens is roughly 45 spoken words, one or two sentences. |
cached_input_share | 0 | Share of input tokens billed at the vendor's cached-input rate. Default 0 (conservative). Only applied where the vendor publishes a cached rate. |
agent_talk_share | 0.5 | Share of the call during which the agent is speaking. TTS is billed only on generated speech; STT, telephony and platform fees are billed on the whole call. |
chars_per_audio_min | 1000 | Characters of text per minute of generated speech. Rime and ElevenLabs both state ~1,000 characters is about one minute of audio; Cartesia states 750-800. We use 1,000. |
What's not included
Phone number rental, taxes and carrier surcharges, recording/storage, concurrency fees, server compute for self-hosted orchestration (Pipecat, LiveKit Agents), and enterprise discounts.
Sources
| Vendor | Pricing page | Checked | Status | Note |
|---|---|---|---|---|
| Deepgram | https://deepgram.com/pricing | 2026-10-17 | verified | |
| AssemblyAI | https://www.assemblyai.com/pricing | 2026-10-17 | verified | Page states last updated 2026-09-28. |
| OpenAI | https://developers.openai.com/api/docs/pricing | 2026-10-17 | verified | |
| Google Cloud | https://cloud.google.com/speech-to-text/pricing | 2026-10-17 | verified | |
| Google Gemini API | https://ai.google.dev/gemini-api/docs/pricing | 2026-10-17 | verified | Page states last updated 2026-10-16. |
| ElevenLabs | https://elevenlabs.io/pricing/api | 2026-10-17 | verified | |
| ElevenLabs | https://elevenlabs.io/pricing/agents | 2026-10-17 | verified | |
| Cartesia | https://cartesia.ai/pricing | 2026-10-17 | verified | |
| Rime | https://rime.ai/pricing | 2026-10-17 | verified | |
| Inworld | https://inworld.ai/pricing | 2026-10-17 | verified | |
| Soniox | https://soniox.com/pricing | 2026-10-17 | verified | |
| xAI | https://docs.x.ai/docs/models | 2026-10-17 | verified | |
| Anthropic | https://www.anthropic.com/pricing | 2026-10-17 | verified | Fetched page rendered some price labels without their input/output captions; only models with explicit labels are marked verified. |
| PlayHT | https://play.ht/pricing/ | 2026-10-17 | unverified | Pricing page returned HTTP 500 to our fetcher and did not connect via curl. Not known whether the API is still sold. |
| Vapi | https://vapi.ai/pricing | 2026-10-17 | verified | |
| Retell AI | https://www.retellai.com/pricing | 2026-10-17 | verified | |
| Bland | https://www.bland.ai/pricing | 2026-10-17 | verified | |
| Synthflow | https://synthflow.ai/pricing | 2026-10-17 | unverified | Enterprise-only; contracts from $30,000/year. No public per-minute rate. |
| Twilio | https://www.twilio.com/en-us/voice/pricing/us | 2026-10-17 | verified | Page says 'Pricing current as of August 2026'. |
| Telnyx | https://telnyx.com/pricing/elastic-sip | 2026-10-17 | verified | |
| Plivo | https://www.plivo.com/voice/pricing/us/ | 2026-10-17 | verified |