Models & Pricing
Every cost number in ANTS Platform comes from a model definition: a rule that recognizes a model name in your traces and says what each unit of usage costs. The same catalog prices SDK and OpenTelemetry traces, Budget AI gateway traffic and the comparison runs of the AI Optimizer.
Open it from Settings → Models (page title Model Definitions). Everyone with project access can view the catalog. Creating, editing, cloning and deleting definitions is limited to the Owner role today. See Members & Roles.
The catalog
| Column | Meaning |
|---|---|
| Model Name | The name of the definition. Click a row to see its configuration, pricing and the observations that use it. |
| Maintainer | An icon: hover shows ANTS Platform maintained for managed definitions or User maintained for the ones your project created. |
| Match Pattern | A regular expression (Postgres syntax) tested against the model attribute of each incoming generation. |
| Prices | Price per usage type, for example input and output. Use the selector in the header to show prices per unit, per 1K units or per 1M units. |
| Tokenizer and Tokenizer Configuration | Used to count tokens when a generation arrives without usage. |
| Last used | Start time of the most recent generation priced by this definition. |
Managed definitions are maintained by ANTS Platform and cover common OpenAI, Anthropic, Google, AWS Bedrock and other models. Some managed models carry tiered prices, for example a higher rate once a request passes a long-context token threshold; the tier is picked from each request's usage.
How a generation is costed
- Match. The generation's model name is matched against the catalog. Your project's own definitions are checked before managed ones, so a custom definition with the same name or pattern overrides the managed price.
- Use ingested cost if present. If the trace already reports cost for the generation, that cost is kept.
- Otherwise multiply usage by price. For each usage type the generation reports (for example
input,output, cached input), cost = units × the price for that usage type. The usage keys must exactly match the price keys in the definition. - Count tokens if usage is missing. If no usage was ingested and the definition has a tokenizer, tokens are counted from the input and output text.
Trace cost is the sum of its generations. Every other view (per model, user, trace name, environment, day) rolls up from these values.
Price changes apply to generations ingested after the change. Generations already stored keep the cost they were given.
Managed versus custom definitions
- Managed definitions are read-only. Use Clone to copy one into a custom definition and change its prices.
- Custom definitions cover models the catalog does not know, such as self-hosted, fine-tuned or newly released models, or negotiated prices. They can be edited and deleted.
- To replace a managed price for your project, give your custom definition the same model name as the managed one.
Check coverage
Open a trace and look at its generations. A generation with no cost usually means its model name matched no definition.
Create or clone a definition
Click Add model definition, or Clone on a managed row, and fill in:
- Model Name
- Match pattern, for example
(?i)^(my-company/)?support-llm-v2$ - Prices per usage type. Prefill usage types from template adds the OpenAI or Anthropic usage keys for you.
- Tokenizer:
openai,claudeorNone. Theopenaitokenizer needs a Tokenizer Config.
Verify
Send a new trace that uses the model and confirm the cost on the generation and in the Cost Dashboard.
Why pricing matters for the AI Optimizer
- The Select Models step sorts comparison models from cheapest to most expensive using these prices.
- Model replay costs every replayed call with this catalog. A comparison model with no definition is costed at zero, which makes its savings meaningless.
Next steps
- Cost & Latency Dashboards: see the cost your definitions produce.
- Model Replay: how comparison runs are priced.
- Sending Data In: send model names and usage for accurate cost.