OptimToken All guides

How we compute cost per request

A specification, not an estimate. These are the formulas the table, the model pages and the MCP server all run.

Every model row carries two cost figures: Cost/req (list price) and Cost/req (after discounts). They answer different questions, and the gap between them is the only part of the number you control. This page gives both formulas in full, the assumptions behind them, and — more usefully — the things they deliberately leave out, because that is where a budget built on them goes wrong.

The list-price formula

Cost per request at the published rate card, with no optimisation assumed:

cost = (inputTokens / 1,000,000) x inputPrice
     + (outputTokens / 1,000,000) x outputPrice

That is the whole of it. The token counts come from the use-case profile you pick in the scenario bar; the prices come from the catalogue. Nothing else enters.

Worked, on Claude Haiku 4.5 (Anthropic, $1.00/M in, $5.00/M out) at the Support Ticket profile:

ComponentTokensRate /1MCost
Input1,500$1.00$0.0015
Output500$5.00$0.0025
Cost/req (list price)$0.0040

The after-discounts formula

Same request, priced as if you had implemented the two optimisations the provider publishes a rate for. Three rules, applied in order:

  1. Batch substitution. If the use case is asynchronous and the model publishes both batch rates, the batch input and output rates replace the list rates outright.
  2. Cache read on the hit-rate share. The profile's cache hit rate is the fraction of input tokens billed at the published cache-read rate; the remainder bills at whatever rate rule 1 left in place.
  3. Fall back, never invent. A model that publishes no batch rate keeps list prices for rule 1. A model that publishes no cache-read rate has its cached share billed at the ordinary input rate, which makes the discount zero.
effectiveInput = cacheRate x hitRate + inputRate x (1 - hitRate)

cost = (inputTokens / 1,000,000) x effectiveInput
     + (outputTokens / 1,000,000) x outputRate

Rule 3 is the one that matters when reading the table. The optimized column is never lower than what the provider will actually honour, so where a model publishes nothing, the two columns are identical — and an identical pair means "nothing published", not "no savings available".

The same request, now at the Support Ticket profile's 60% cache hit rate (this profile is synchronous, so no batch rate applies):

ComponentTokensRate /1MCost
Input, cache hit (60%)900$0.10$0.000090
Input, cache miss600$1.00$0.000600
Output500$5.00$0.0025
Cost/req (after discounts)$0.0032

A 20.3% reduction, entirely from prompt caching. Note where it comes from: output is untouched, so the saving is bounded by the input share of the request before caching is even discussed.

An asynchronous profile exercises both rules. At Meeting Summary (10,000 in, 1,200 out, 10% cache hit, batch-eligible) the batch rates replace list on both sides first, and the cache rate then applies to 10% of input:

ComponentTokensRate /1MCost
Input, cache hit (10%)1,000$0.10$0.000100
Input, cache miss (batch rate)9,000$0.50$0.0045
Output (batch rate)1,200$2.50$0.0030
Cost/req (after discounts)$0.0076

$0.016 at list, $0.0076 optimized: 52.5% off. The monthly figure is this number multiplied by your volume and nothing else — at 100,000 requests a month, $1.6K becomes $760.

Do not read 52.5% as typical. This example was chosen because it publishes both a cache and a batch rate, which only 58 of 254 priced models do; the median model on this profile saves far less, for the reason set out in the next section.

How much the optimized column is actually worth

Median discount the optimized column applies, by use case Median discount the optimized column applies, by use case Knowledge Q&A 21.0% Support Ticket 20.3% Agent Workflow 18.0% Invoice Processing 10.4% Coding Task 10.4% Meeting Summary 6.1% Call Summary 4.1% Marketing Content 3.9%

Measured across the 254 models carrying both prices, counting only those that receive a discount for that profile. Knowledge Q&A moves furthest at 21.0%; Marketing Content moves least at 3.9%.

The ordering rewards cache hit rate rather than batch eligibility, which is worth pausing on. Batch is the larger discount — typically half off both sides — but it can only apply to the 58 models publishing a batch rate, so on an asynchronous profile the median model still gets nothing from it. A high cache hit rate pays out on every model publishing a cache rate. That gap is the whole reason the Meeting Summary example above saved 52.5% while the median model on that same profile saves 6.1%: one model publishes batch rates, most do not.

Use caseTokens in / outCache hitBatchModels discountedMedian saving
Support Ticket1,500 / 50060%No160 of 25420.3%
Knowledge Q&A2,000 / 80070%No160 of 25421.0%
Meeting Summary10,000 / 1,20010%Yes166 of 2546.1%
Marketing Content2,500 / 1,80020%No160 of 2543.9%
Coding Task3,000 / 2,00050%No160 of 25410.4%
Invoice Processing1,500 / 60030%Yes192 of 25410.4%
Call Summary2,000 / 70010%Yes166 of 2544.1%
Agent Workflow6,000 / 3,00070%No160 of 25418.0%

These hit rates are modelling assumptions, not measurements of your traffic. They are the single biggest lever on the optimized column, so treat that column as a shape rather than a quote.

Which models can be discounted at all

Published discount rates across 254 priced models Published discount rates across 254 priced models Cache and batch rates 51 Cache read only 113 Batch only 7 Neither published 83

171 of 254 priced models publish at least one discount rate; 83 publish neither and therefore show an optimized cost identical to list. That is a disclosure gap, not a pricing fact — a provider may well run a batch endpoint it has not published a rate card for. Where the two columns match, the correct reading is that we have nothing to quote.

What these numbers deliberately exclude

Every exclusion below is a decision, not an oversight. Each one would have made the figure look better and less true.

Using the number honestly

For a team early in its FinOps practice the first useful step is not choosing a cheaper model, it is splitting the bill into input, output, cache reads and cache writes. Almost every decision on this page becomes obvious once that split exists, and almost none of them are answerable without it.

The FinOps reasoning behind this guide comes from OptimNow's open-source practice library: github.com/OptimNow/cloud-finops-skills.

These are list prices.

Your real cost also depends on caching and batching, negotiated discounts, marketplace agreements, and the contracts you already have. OptimNow audits exactly that.

Get a FinOps review

Data snapshot: 2026-08-16 · Compare all models · Cloud compute pricing · All guides