Skip to main content
Run cost is the sum of the costs of the model calls recorded in a run’s trace. Atlan prices each call when it processes the trace, from the call’s token counts and the rates that apply to its model and workspace. The cost is then fixed: changing a rate later does not reprice existing runs.

The formula

For each model call, with rates in USD per million tokens:
A call is priced when its span has a model name and at least one input, output, cache-read, or cache-write token. Spans without a model or tokens are not priced from rates. See Trace attributes for the keys Atlan reads.

Which rate applies

Atlan resolves rates in two steps: first which model record prices the call, then where each of its four rates comes from. Atlan matches the requested model name first, then the model the provider reported. For a configured model, each of the four rates resolves on its own. The first source that applies wins: List price unavailable in Models & rates means the public price could not be looked up at that moment. Every member can view rates; only an organization Admin can change them. See Set model rates. When a model has no public list price and you enter only an input rate, its cache reads and writes are priced at that input rate rather than at zero.

How tokens are counted

  • Fresh input excludes tokens read from or written to the cache. Most producers report the whole prompt as input, cached tokens included, so Atlan subtracts the cache-read and cache-write counts before pricing. Cached tokens are never charged twice.
  • Cache reads and writes have their own rates. A run that reads a large cache can show a low cost beside a high token count.
  • Reasoning tokens are part of the output count. They are priced as output once, not added again.
  • Long prompts: when a model’s price has context tiers, a prompt whose fresh input, cache reads, and cache writes together exceed a tier’s threshold uses all four of that tier’s rates.

Worked example

These rates are illustrative, in the shape Atlan uses for a chat model: input 3.00,output3.00, output 15.00, cache read 0.30,andcachewrite0.30, and cache write 3.75 per million tokens. One model call reports a prompt of 12,000 tokens, of which 8,000 were read from the cache and 1,000 written to it, and 600 output tokens, of which 200 were reasoning. The same call at other price sources: If the 12,000-token prompt were charged entirely as fresh input, the input line alone would be $0.036, which is why the cache split matters.

Unpriced and missing costs

  • Unpriced means Atlan looked for a rate and found none. The call’s cost is recorded as zero and labelled unpriced. It is not evidence that the call was free.
  • A cost your code recorded on a span is replaced when Atlan prices the call. When Atlan finds no rate, the call is unpriced at zero, even if your code recorded a cost.
  • If the rate lookup fails, the batch keeps the cost its producer recorded, if any.
  • Spans without a model or token counts keep whatever cost the producer recorded. Without one, they have no cost.
Through the API, read a span with fields=cost to see where its cost came from in cost.source:

Model Gateway and trace cost

Model Gateway prices each call it serves with the same rules: the same entered rates, seller discounts, and list prices. Its usage views count the calls the gateway served. FinOps reports count the model calls recorded in your traces. The two are separate records, so do not add them together. They can differ when:
  • A call goes through Model Gateway but your agent does not trace it. It appears only in Model Gateway usage.
  • A call goes straight to a provider and is traced. It appears only in traces.
  • The workspaces differ. Model Gateway records a call in the workspace of the model that served it. Trace pricing uses the trace’s workspace, then the organization’s default workspace.