What a model call costs
A model call is billed by tokens, counted separately for what goes in and what comes out, and priced differently by modality. Output is dearer than input, audio is dearer than text, and the input you pay for is the whole context — so the largest line in most bills is instructions and history being re-sent, not anything a user typed.
The four prices, as ratios#
Absolute figures move and are the provider's to publish. The ratios are what change an architecture, and on the model family behind Connect's realtime voice path they sit roughly like this.
| Direction and modality | Roughly, relative to text input |
|---|---|
| Text in | 1×, the baseline |
| Text out | about 6× |
| Audio in | about 4× |
| Audio out | about 16× |
Two consequences follow immediately. Speaking is far dearer than typing, so the same conversation on the phone and by mail are different commercial propositions. And output dominates: a reply trimmed from a median of 23–40 words to 19 is a real saving on the dearest tokens in the system, and it also happens to sound better on a call.
The cost nobody puts on the invoice#
- Carried context. Instructions, retrieved material and history are re-sent every turn. A twenty-turn conversation pays for its instruction block twenty times.
- Retrieval that over-fetches. Sending ten passages where two would do is paid for on every call that does it.
- Retries. A failed call that is retried is billed twice, and a badly designed retry loop can be billed many times.
- Reasoning tokens. On models that produce them, they are output tokens that no one reads.
- Research and enrichment. Work done before an answer exists — see spending research budget where it changes a decision.
- The cheap call you made a million times. Per-call thinking hides volume; the total is a rate multiplied by traffic.
Does Connect use model cost metering?#
Used. Voice calls are priced on their audio tokens by voice_cost.py against the AI quota, every call is charged, and a call the budget cannot cover is stopped rather than run into an overrun nobody chose. On the workspace side metering.py and tenant_entitlements.py hold the plan limits and the daily ledger; a spent allowance produces a held action with a visible reason, not a silent failure.
The context budgets described under context window are the other half of the same control, and they are the half that acts before the money is spent: 2,000 characters and at most 4 facts of Knowledge, 700 characters of memory, a 600-character contact block. Capping the input is how you stop a per-turn charge from growing with the size of a business.
This page states no prices, for Connect or for any provider. Ratios and budgets are what survive a provider's price change; a figure written into documentation is wrong by the time somebody reads it.
Measuring it so the number means something#
Count tokens by direction and modality, per call, not per conversation.
Result You can see which of the four prices your spend actually sits in, which is usually not where people guess.
Attribute to a workspace and a channel.
Result A single expensive workflow stops hiding inside a healthy average.
Track carried context separately from the message.
Result The line that grows is visible before it is a problem, and it is the line that grows.
Set the budget where the work happens, not at the invoice.
Result A stopped call is a decision; a surprise at the end of the month is an incident.
The same discipline applies to database work, where Connect counts statements rather than milliseconds precisely because a count is stable enough to defend — query cost covers that side.
Questions#
Why is a voice conversation dearer than the same conversation by email?
Because audio tokens are priced well above text on both directions, and speech carries more tokens per idea than writing does. The same exchange is a different cost on the two channels before anything else is considered, which is why voice budgets are tighter and replies are kept short.
Does a shorter reply save much?
It saves on the dearest tokens in the system, and on a call it saves twice — output tokens, and the time the caller spends waiting through them. Trimming the median reply to about nineteen words was a quality change that paid for itself in cost.
Does Connect stop working when a budget runs out?
It stops the specific thing the budget cannot cover, with a reason on the record, rather than degrading quietly. A call that cannot be paid for is not placed; a spent daily allowance holds a send until the allowance resets or the plan changes.