Prices and blanks
How a call gets its price
Section titled “How a call gets its price”AI providers charge by the token. A token is a small piece of text, roughly a short word. ai-tally keeps a price list with each provider’s rates per million tokens. There are separate rates for:
- input tokens, the text you send
- output tokens, the text that comes back
- cached input tokens, input the provider has seen recently and charges less for
When a call arrives, ai-tally looks up the provider and model and multiplies each token count by its rate. It does this itself, even when your code sends its own cost estimate. That way every call is priced the same way.
For example, suppose a gpt-4o-mini call uses 1,000 input tokens and 500 output tokens. ai-tally charges the 1,000 input tokens at the input rate and the 500 output tokens at the output rate, then adds the two.
Dated model names
Section titled “Dated model names”Providers publish dated versions of a model, like gpt-4o-2024-08-06 or claude-sonnet-4-5-20250929. ai-tally prices a dated name at the rate for its base model (gpt-4o, claude-sonnet-4-5). Only a real date at the end is treated this way. A name like gpt-4-0613 is not a date, so it needs its own price.
Cached tokens
Section titled “Cached tokens”When a provider serves part of your input from its cache, ai-tally bills those tokens at the cached rate and the rest at the normal input rate. If the price list has no cached rate for a model, cached tokens are billed at the normal input rate.
Anthropic also charges extra for writing to its cache. ai-tally counts those tokens at the normal input rate, so calls that write to Anthropic’s cache come out a little lower than your bill.
Blank, not $0
Section titled “Blank, not $0”Sometimes ai-tally cannot know what a call cost. When that happens, the dashboard shows a blank (—) instead of a number. Hover over it to see why. A blank never means free.
A call’s cost is blank when:
- It did not report its tokens. The most common case is an OpenAI stream sent without
stream_options.include_usage. - Its model is not on the price list. The call is still saved and counted, just without a price.
- It is missing the provider or model name.
A total that includes some blank calls is marked at least. It adds up only the calls ai-tally could price, so the real total is higher.
Estimated and reconciled
Section titled “Estimated and reconciled”Every cost ai-tally works out from its price list is an estimate: the price list times what the call reported. Cost Explorer shows these as Estimated.
Cost Explorer also has a Reconciled figure, meant for costs checked against your provider’s actual bill. It stays blank until that check has been run for your organization.
- Try it: send one call with the Quickstart and find its price in Cost Explorer.
- A cost is blank and you expected a number? See Check it works.