> ## Documentation Index
> Fetch the complete documentation index at: https://ai-development-environment.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Costs

> Model prices used to estimate what Plans and Sessions cost.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/ai-development-environment/XmuMCFv09SOCZYoa/images/light/costs.png?fit=max&auto=format&n=XmuMCFv09SOCZYoa&q=85&s=eb3793049f170c327e794163d1b56747" alt="Costs page in light theme" width="3840" height="2160" data-path="images/light/costs.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/ai-development-environment/aldo79nFpNgOg3HT/images/dark/costs.png?fit=max&auto=format&n=aldo79nFpNgOg3HT&q=85&s=1bf3b734d9665888a776575ef05f5faa" alt="Costs page in dark theme" width="3840" height="2160" data-path="images/dark/costs.png" />
</Frame>

The **Costs** page at `/costs` manages the model price catalog. Every [Plan](/ai/plan-detail) and [Session](/ai/session-detail) reports a **Model cost catalog** figure alongside whatever the provider itself reported, and this catalog is where that figure comes from — one consistent set of prices applied to every run's token counts, regardless of which AI tool produced them.

<Note>
  Two cost numbers appear on a run for a reason. The provider's is what will show up on a bill. The catalog's prices every run the same way, so runs are comparable across tools — and the gap between the two is itself informative.
</Note>

## The price catalog

The default source is LiteLLM's published `model_prices_and_context_window.json`, which is the one catalog covering every tool this app drives.

| Control            | What it does                                                                        |
| ------------------ | ----------------------------------------------------------------------------------- |
| **Model cost URL** | Point at your own catalog in the same JSON shape. Leave it empty to use the default |
| **Save**           | Stores the URL and re-fetches from it                                               |
| **Use default**    | Clears the field, which is what restores the built-in source                        |
| **Fetch latest**   | Refreshes now rather than waiting for the daily cycle                               |

Underneath, the card reports when prices were last fetched, how many models the catalog holds, and whether the source is the **Default source** or a **Custom source**. A **Refresh due** badge means the catalog is missing or more than a day old.

<Note>
  Prices refresh automatically once a day, and a page load that finds the catalog stale triggers a refresh on read. A fetch that fails is reported inline with the underlying error, and the previous prices stay in place rather than being cleared.
</Note>

## Model prices

The table lists every priced model in the catalog. Prices are shown per million tokens, formatted to keep both cheap and expensive models readable — four decimal places under a dollar, two above it.

| Column                 | Contents                                  |
| ---------------------- | ----------------------------------------- |
| **Model**              | The catalog's model identifier            |
| **Provider**           | The provider the catalog attributes it to |
| **Input / MTok**       | Price per million input tokens            |
| **Output / MTok**      | Price per million output tokens           |
| **Cache read / MTok**  | Price per million cached-read tokens      |
| **Cache write / MTok** | Price per million cache-write tokens      |
| **Context**            | Maximum input tokens                      |

Every column sorts. Names open ascending; prices and context windows open descending, since someone sorting by those is usually looking for an extreme. Search filters the table server-side, and rows load 100 at a time as you scroll, with a **Showing *n* of *N*** count underneath.

A dash means the catalog publishes no value for that field — some entries price input and output but say nothing about caching.

## Notes

* A catalog entry with neither an input nor an output price is dropped rather than stored as a row that could never price anything.
* Changing the source URL re-prices future estimates only; figures already recorded on past runs are not rewritten.
* The catalog is shared across the whole control plane — it is not per agent, per repository, or per run.

## Related pages

<Columns cols={2}>
  <Card title="Usage" icon="chart-column" href="/ai/usage">
    Token spend collected from every enrolled machine.
  </Card>

  <Card title="Session details" icon="terminal" href="/ai/session-detail">
    Where the catalog cost appears alongside the provider's.
  </Card>

  <Card title="Plans" icon="clipboard-list" href="/ai/plans">
    Estimated cost per run in the list.
  </Card>

  <Card title="Settings" icon="settings" href="/system/settings">
    Other control-plane-wide configuration.
  </Card>
</Columns>
