Pick an engine, or compose one
Prices are per connected minute at typical speech rates, including the flat $0.012 orchestration fee. The table is generated from the same price book the meter bills against, so it cannot drift from what you are charged.
| Engine | Pipeline | Per minute |
|---|---|---|
classic | Deepgram + GPT-4o-mini + ElevenLabs | $0.0867 |
sarvam | Sarvam, Indian languages end to end | $0.0623 |
gemini-live | Gemini Live, native audio | $0.0466 |
deepgram-agent | Deepgram Voice Agent | $0.1851 |
Telephony is not included and not marked up. Calls run over your own SIP trunk, so you keep your carrier rates and your carrier relationship.
Compose your own
Name a model for each stage. The speech-to-text sets the family, the other two stages follow it, and the price is what those three add up to per minute.
Runs on the Deepgram · OpenRouter · ElevenLabs pipeline, which the speech-to-text selects. At typical speech rates, including the platform fee; metered per second, token and character, and billed for the model that actually ran. Within a family the pipeline picks the variant for the agent’s language. How composing works
{
"voice": {
"stt": {
"model": "deepgram/nova-3"
},
"llm": {
"model": "openrouter/gpt-4o-mini"
},
"tts": {
"model": "elevenlabs/eleven_turbo_v2_5"
}
}
}Every charge is traceable to a second of audio
Credit is reserved before a call is placed and debited as it runs. Every micro that leaves the balance is explained by a usage row, so a bill is answerable without asking support.
Reserved at admission
Credit for the first stretch of the call is held before a port is opened or a provider socket is created. An account that cannot fund it is refused with 402, so a call that never happens costs nothing.
Debited as it runs
Speech seconds, tokens and characters are metered against the balance every few seconds while the call is live. Run low and the agent warns your caller; run out and it says goodbye rather than dropping the line.
Settled at hangup
The hold is released and only what was used stays debited, one row per component, reconciled against the call’s real duration.
$ curl .../v1/billing/balance
{
"object": "balance",
"balance_display": "$24.75",
"held_micros": 250000, # held by live calls
"available_micros": 24500000
}Amounts are integer micro-USD, so a charge of $0.000021 has a representation that agrees with the ledger. Every response carries a display string beside it.
No surprise invoices
Prepaid. You cannot be billed for more than you added.
Prices frozen per call
A call is priced at admission and finishes on those rates, so a price change never moves a meter mid-conversation.
Under-billed on our failures
If we crash mid-call you are charged for the seconds we can prove, not the amount we reserved.
Refused before it costs you
A call that cannot fund its first 15 seconds is refused before anything is allocated. At about a minute of runway the agent warns your caller and then hangs up cleanly.
Start with a curl
Sign up, create a key, point a SIP trunk at us. From there the quickstart is four requests long.


