Claude Fable 5$22.000/MClaude Opus 5$11.000/MClaude Opus 4.8$11.000/MClaude Opus 4.7$11.000/MClaude Opus 4.6$11.000/MClaude Opus 4.5$33.000/MClaude Sonnet 3.7$6.600/MClaude Opus 3$33.000/MClaude 2.1$12.800/MClaude 2$12.800/MGPT-5.6 Sol$12.500/MGPT-5.6 Terra$5.000/MGPT-5.5$12.500/MGPT-5.2$5.425/MGPT-5.2-Codex$5.425/MGPT-5$3.875/MGPT-4.5$97.500/MGPT-4 Turbo Preview$16.000/MGPT-4$39.000/MGPT-4-32k$78.000/Mo3$19.000/Mo3-mini$2.090/Mo4-mini$2.090/Mo1$28.500/Mo1-mini$5.700/Mo1-preview$28.500/MGemini 3.5 Pro$5.000/MGemini 3.1 Pro$5.000/MGemini 3 Pro$5.000/MGemini 2.5 Pro$3.875/MClaude Fable 5$22.000/MClaude Opus 5$11.000/MClaude Opus 4.8$11.000/MClaude Opus 4.7$11.000/MClaude Opus 4.6$11.000/MClaude Opus 4.5$33.000/MClaude Sonnet 3.7$6.600/MClaude Opus 3$33.000/MClaude 2.1$12.800/MClaude 2$12.800/MGPT-5.6 Sol$12.500/MGPT-5.6 Terra$5.000/MGPT-5.5$12.500/MGPT-5.2$5.425/MGPT-5.2-Codex$5.425/MGPT-5$3.875/MGPT-4.5$97.500/MGPT-4 Turbo Preview$16.000/MGPT-4$39.000/MGPT-4-32k$78.000/Mo3$19.000/Mo3-mini$2.090/Mo4-mini$2.090/Mo1$28.500/Mo1-mini$5.700/Mo1-preview$28.500/MGemini 3.5 Pro$5.000/MGemini 3.1 Pro$5.000/MGemini 3 Pro$5.000/MGemini 2.5 Pro$3.875/M

Index methodology

Tokenando Indices

Version 1.2.2. Everything below — formulas, constants, source weights, exclusion rules, throughput citations — renders from the same versioned configuration the settlement job computes with. If a value changes, the version changes, the changelog records it, and already-settled history stays frozen.

Principles

Raw-first: every collector stores the untouched upstream payload before any parsing; settlement reads only stored raw data, never live sources.

Deterministic and idempotent: re-running a settled day must reproduce every value exactly, or the run fails loudly. Settled values are immutable at the database level.

Drop, don’t fudge: a lab or GPU with insufficient coverage is omitted for the day with a recorded reason. Nothing is interpolated, carried forward, or estimated.

Everything disclosed: offered prices are labeled offered; volume proxies are named with their bias; every methodology change is versioned and logged.

TTPI — Token Price Index

blended(model) = input_price × 0.75 + output_price × 0.25
TTPI(lab, day)  = Σ blended(model) × volume_share(model)   over the lab’s covered models

Prices come from the OpenRouter models API, captured at 23:45 UTC as the day’s close; prices are converted to USD per million tokens, and per-model price overrides shadow base prices where present. Free variants and zero-priced listings are excluded — TTPI is a paid-token index.

Volume weights come from the OpenRouter rankings snapshot captured the following morning (05:10/05:40 UTC), restricted to rows upstream attributes to the settled day, variants standard and thinking only (free and batch are excluded). This weight source reflects routed traffic, not any lab’s total global volume — direct enterprise API traffic is invisible to every public index. That bias is the honest cost of an open methodology, and it is disclosed here rather than hidden.

A lab publishes only when it has at least 2 models carrying both a price and volume, and when the priced models cover at least 90% of the lab’s included-variant volume. Below either floor, the lab drops for the day with a recorded reason.

LabSlugOpenRouter prefixesClosed-weight
Anthropicanthropicanthropicyes — Frontier Premium numerator
OpenAIopenaiopenaiyes — Frontier Premium numerator
Googlegooglegoogleyes — Frontier Premium numerator
xAIxaix-aiyes — Frontier Premium numerator
DeepSeekdeepseekdeepseekno
Metametameta-llamano
Mistralmistralmistralaino
Qwenqwenqwenno
Moonshot AImoonshotmoonshotaino
Z.ai (Zhipu)zhipuz-aino
MiniMaxminimaxminimaxno
Tencenttencenttencentno

TCPI — Compute Price Index

provider_price(gpu) = median of that provider’s per-GPU offers across the day’s captures
TCPI(gpu, day)      = weighted median of provider_price over all providers   (cleared 2.0 · posted 1.0)

GPU offers are captured four times daily (05:30, 11:30, 17:30, 23:30 UTC) from three disclosed sources: the Vast.ai public ask book (one query per GPU, price-ascending so any truncation at the venue’s 64-offer cap is stable and bites the expensive tail), RunPod’s public GPU pricing (secure and community cloud as two distinct providers), and the Shadeform catalog, which carries posted rates for 19 underlying clouds — each counted as its own provider, only regions with live availability.

All prices are normalised to USD per single GPU-hour (node prices divided by GPU count; Shadeform’s cent-denominated prices divided by 100 — cross-verified against posted dollar rates). Offers outside a per-GPU plausibility band are discarded and counted. Every current source posts asked/on-demand rates, so v1 is honestly an OFFERED-price index; the cleared-source weight is declared now so adding a transaction-based source later is a source addition, not a formula change.

A GPU publishes only with offers from at least 3 distinct providers. Interruptible/spot prices are excluded from the headline and published as a separate companion series. The per-provider median-of-offers followed by a cross-provider weighted median means neither a flood of listings from one venue nor a single outlier provider can move the index.

GPU keyPlausibility band $/GPU-hrVast namesRunPod namesShadeform type
H100 SXM0.515H100 SXMH100 SXMH100 (sxm)
H100 PCIe0.512H100 PCIEH100 PCIeH100 (pcie)
H2000.820H200H200 SXMH200
B200130B200B200B200
A100 SXM40.210A100 SXM4A100 SXMA100_80G (sxm)
RTX 40900.055RTX 4090RTX 4090RTX4090
RTX 50900.088RTX 5090RTX 5090RTX5090

TIS — Inference Spread & Frontier Premium

implied_self_host($/MTok)         = TCPI(gpu) ÷ throughput(open_model, gpu, profile)
TIS(lab, open_model, gpu, profile) = TTPI(lab) − implied_self_host
Frontier Premium(profile)          = min closed-lab TTPI ÷ min verified implied_self_host

Throughput constants come from published, citable serving benchmarks, converted as tokens/sec/GPU × 3600 ÷ 10⁶. Each row carries its citation, its serving configuration, and the per-user interactivity it delivers.

TIS publishes only from rows a human has verified against the citation — an unverified row produces no number, ever. Both indices feeding a spread must have settled the same day; a missing input is a drop, never a substitution.

The implied self-hosting cost is a floor, not a forecast: it assumes the rented GPU is busy serving at the cited throughput for every hour you pay for. Real deployments carry idle capacity, failed requests, model loading, and the salary of whoever keeps it running — none of which this index estimates, because none of them are observable market prices. Read the self-hosted side as the best case that disciplined engineering could reach.

Coverage

TIS currently covers 5 open-weight models across 9 model-and-GPU combinations, each at 3 serving speeds. Model, GPU and speed are all reader-selectable, because each of them moves the cost per million tokens by more than the gap between two labs — fixing any of them silently would amount to choosing the conclusion.

Coverage is bounded by what is publicly benchmarked, not by what we would like to show: a combination appears only when a citable published measurement exists for it, and a GPU appears only when TCPI also prices it that day. Everything else is dropped and logged.

Open modelGPUs coveredServes its own API?In Frontier Premium?
DeepSeek V4 Pro 1.6TB200yes — deepseek (like-for-like available)yes
DeepSeek R1 0528 671BH100 SXM, H200yes — deepseek (like-for-like available)yes
Kimi K2.5/K2.6/K2.7-Code 1TB200, H200yes — moonshot (like-for-like available)yes
MiniMax M3 428BH100 SXM, H200yes — minimax (like-for-like available)yes
gpt-oss 120BB200, H100 SXMno — substitution onlyno — not frontier-scale

What each pairing compares

Two different questions hide inside the phrase "cost of serving a token", and blending them would be misleading, so the index reports them separately.

A LIKE-FOR-LIKE pairing puts a lab’s own API against self-hosting that lab’s own open-weight model. The weights are identical and so is the output quality; the only variable is who operates the hardware. That makes the spread a clean measurement of the hosting margin — what you pay for someone else to run the GPUs.

A SUBSTITUTION pairing puts a closed lab’s API against self-hosting a different, open-weight model. Claude, GPT and Gemini weights are not released at any price, so no like-for-like self-hosted comparison for them can exist — that structural asymmetry is precisely what makes the frontier interesting to measure. The spread here bundles a price gap with a capability gap and must be read as a procurement question ("is open-weight good enough for this workload?"), never as a like-for-like saving. The Frontier Premium is a substitution measure by construction.

A third combination — an open-weight lab’s API against self-hosting some other open model — is not published at all: anyone willing to self-host would run the model they already use, so the number would answer nothing.

The Frontier Premium uses only frontier-class open models as its denominator. A small, fast model can produce tokens far more cheaply than a frontier-scale one, so admitting it would make the headline ratio a measure of model size rather than of hosting economics. Models excluded on that basis remain fully available everywhere else in TIS.

Serving operating points

A serving stack can be tuned to push many tokens through each GPU, with every user seeing slower output, or few tokens per GPU with every user seeing fast output. Published results for one model on one GPU span roughly 11× across that curve — a wider gap than the one between two different labs — so the operating point you assume decides the answer more than the market data does.

That makes a single silent choice the least defensible act available to this index. So every operating point settles as its own daily series, the dashboard lets you switch between them, and the "Balanced" point is the published default used for citation, the API's default response, and the daily brief. The sensitivity is the finding; hiding it would be the error.

ProfilePer-user speedWhat it represents
Tuned for volume61 tok/sBatch and offline serving: the most tokens per GPU-hour, with each user seeing slower output. Flatters self-hosting relative to interactive API pricing.
Balanced headline116 tok/sInteractive serving at roughly the responsiveness a commercial API delivers — the closest like-for-like comparison, and the published headline.
Tuned for speed171 tok/sLatency-critical serving: the fastest per-user output, at the fewest tokens per GPU-hour. The most conservative view of self-hosting economics.

Throughput table

Open modelGPUProfiletok/s/GPUMTok / GPU-hrConfigurationCitationStatus
deepseek-v4-proB200volume705125.3836FP4, 8k/1k seq, 61 tok/s/userInferenceX (SemiAnalysis) — DeepSeek V4 Pro 1.6T, B200 vs H200 (2026-08-16)verified
deepseek-v4-proB200balanced16876.0732FP4, 8k/1k seq, 116 tok/s/userInferenceX (SemiAnalysis) — DeepSeek V4 Pro 1.6T, B200 vs H200 (2026-08-16)verified
deepseek-v4-proB200latency6082.1888FP4, 8k/1k seq, 171 tok/s/userInferenceX (SemiAnalysis) — DeepSeek V4 Pro 1.6T, B200 vs H200 (2026-08-16)verified
deepseek-r1H100 SXMvolume7392.6604FP8, 8k/1k seq, 45 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
deepseek-r1H100 SXMbalanced2811.0116FP8, 8k/1k seq, 71 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
deepseek-r1H100 SXMlatency1540.5544FP8, 8k/1k seq, 97 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
deepseek-r1H200volume17736.3828FP8, 8k/1k seq, 45 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
deepseek-r1H200balanced9073.2652FP8, 8k/1k seq, 71 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
deepseek-r1H200latency5001.8FP8, 8k/1k seq, 97 tok/s/userInferenceX (SemiAnalysis) — DeepSeek R1 0528 671B, H100 vs H200 (2026-08-16)verified
kimi-k2.6B200volume3531.2708FP4, 1k/1k seq, 54 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
kimi-k2.6B200balanced2360.8496FP4, 1k/1k seq, 71 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
kimi-k2.6B200latency1680.6048FP4, 1k/1k seq, 88 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
kimi-k2.6H200volume2941.0584FP4, 1k/1k seq, 54 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
kimi-k2.6H200balanced2210.7956FP4, 1k/1k seq, 71 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
kimi-k2.6H200latency1580.5688FP4, 1k/1k seq, 88 tok/s/userInferenceX (SemiAnalysis) — Kimi K2.6 1T, B200 vs H200 (2026-08-16)verified
gpt-oss-120bB200volume1660259.7672FP4, 1k/1k seq, 117 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
gpt-oss-120bB200balanced919133.0876FP4, 1k/1k seq, 166 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
gpt-oss-120bB200latency573020.628FP4, 1k/1k seq, 216 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
gpt-oss-120bH100 SXMvolume26229.4392FP4, 1k/1k seq, 117 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
gpt-oss-120bH100 SXMbalanced13794.9644FP4, 1k/1k seq, 166 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
gpt-oss-120bH100 SXMlatency7402.664FP4, 1k/1k seq, 216 tok/s/userInferenceX (SemiAnalysis) — gpt-oss 120B, B200 vs H100 (2026-08-16)verified
minimax-m3H100 SXMvolume5371.9332FP8, 1k/1k seq, 76 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified
minimax-m3H100 SXMbalanced2370.8532FP8, 1k/1k seq, 138 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified
minimax-m3H100 SXMlatency1570.5652FP8, 1k/1k seq, 199 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified
minimax-m3H200volume6992.5164FP8, 1k/1k seq, 76 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified
minimax-m3H200balanced3601.296FP8, 1k/1k seq, 138 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified
minimax-m3H200latency2230.8028FP8, 1k/1k seq, 199 tok/s/userInferenceX (SemiAnalysis) — MiniMax M3 428B, H100 vs H200 (2026-08-16)verified

Operating points are read off InferenceX’s published throughput-vs-latency curve; SemiAnalysis interpolates between measured runs, which we disclose rather than present as discrete measurements.

Verified throughput citations are re-checked weekly. A citation older than 90 days, or whose source URL stops resolving, raises an alert rather than ageing silently into the index — but a constant is only ever updated by a reviewed commit with a changelog entry, never automatically.

Day attribution & settlement

All days are UTC. For settled day D: GPU offers are captured four times during D; token prices are captured at 23:45 UTC on D; volume weights are captured at ~05:10 UTC on D+1 (the rankings snapshot upstream attributes to D); settlement runs at 06:00 UTC on D+1. Settled values are frozen the moment they are written.

The published record begins at index inception, 2026-08-15. Settlement refuses to produce a value for any earlier day, so the start of the series is a deliberate, enforced boundary rather than wherever data happened to begin. Values computed before inception, while the methodology was still being written, were removed rather than published; the raw observations behind them were kept.

Sources

SourceTypeFeedsNotes
OpenRouter models APIposted pricesTTPI pricesofficial public API; per-model USD-per-token
OpenRouter rankingsvenue-reported volumeTTPI weightspublic endpoint; routed-traffic bias disclosed above
Vast.ai ask bookposted (marketplace asks)TCPIpublic search API; ask book only — no utilization signal
RunPod pricingpostedTCPIpublic GraphQL; secure + community as two providers; bids → spot series
Shadeform catalogposted (19 clouds)TCPIpublic API; per-region availability gating; cents→USD verified
InferenceX + engine reportspublished benchmarksTIS throughputcited per row; human-verified before publication

Free JSON API

The headline series are free, keyless, and CORS-open. Responses carry the methodology version and coverage metadata on every value.

EndpointReturns
/api/v1/catalogIndices, entities, date ranges, version, disclaimer
/api/v1/ttpi?lab=&from=&to=Token price index, per lab per day ($/MTok)
/api/v1/tcpi?gpu=&series=headline|spotCompute price index, per GPU per day ($/GPU-hr)
/api/v1/tis?lab=&model=&gpu=Inference spread, per verified pair ($/MTok)
/api/v1/frontier-premiumThe headline ratio series
/api/v1/labs · /api/v1/gpusRegistries (config-derived)

Changelog

VersionDateChanges
1.2.22026-08-16

Correction to the 1.2.1 note below: it said the two construction days had token prices captured "roughly a day late". That was accurate for 2026-08-14 (22h57m late) but overstated for 2026-08-15, whose prices were 7h25m late. Posted token prices change on announcement, roughly monthly, so a seven-hour offset does not move the index materially.

Index inception accordingly moved from 2026-08-17 to 2026-08-15, and that day settled. It is the first day with a complete input set: GPU offers captured within the day itself, and volume weights captured the following morning exactly as designed. The late price capture is disclosed on the snapshot record rather than smoothed over.

2026-08-14 remains excluded permanently: its prices were nearly a full day late and no GPU offers were collected at all, so two of the three indices could never settle for it.

1.2.12026-08-16

Index inception set to 2026-08-17: settlement now refuses any earlier day outright, so the published record has a defined and enforced start.

Values settled during construction on 2026-08-14 and 2026-08-15 were removed (migration 0008). Their token prices were captured roughly a day late — the end-of-day collector did not exist when those days closed, so the snapshots held the following day’s prices — and the methodology changed three times across them, leaving values the current configuration cannot reproduce. Publishing two days that fail our own reproducibility test, at the exact point a reader looks hardest, was not worth two days of history.

Every raw snapshot from those days was kept, immutable and untouched, including volume observations that can never be re-fetched from upstream. Nothing irreplaceable was discarded, and the settle-run log of what happened during construction was kept as an audit trail.

1.2.02026-08-16

TIS expanded from one open model on one GPU to five models across nine model-and-GPU combinations — DeepSeek V4 Pro and R1, Kimi K2.6, MiniMax M3 and gpt-oss 120B on H100 SXM, H200 and B200 — each at three serving speeds, all sourced from InferenceX comparison pages with per-pairing citations. Readers choose the combination rather than inheriting ours.

Frontier Premium is now restricted to frontier-class open models. gpt-oss 120B is excluded from it: at roughly 60M tokens per GPU-hour it would set the cheapest self-hosted cost by being small and fast, turning the headline ratio into a statement about model size rather than hosting economics. It remains fully available in TIS.

Pairings that answer no real question are no longer settled: an open-weight lab’s API against somebody else’s open model. Only like-for-like (the lab that serves this exact model) and substitution (closed labs, which cannot be self-hosted at all) are published.

Reproducibility checks are now scoped to the methodology version that produced a value. A value settled under an earlier version is frozen history — it cannot be re-derived from today’s constants and is never overwritten or reported as a mismatch. Without this, the first constant change would have made every historical day fail to re-settle, contradicting the purpose of versioning.

1.1.12026-08-16

Throughput rows now record which lab publishes the open weights, so the index can distinguish a like-for-like pairing (a lab’s own API vs self-hosting its own model — a clean hosting-margin measurement) from a substitution pairing (a closed lab’s API vs switching to a different, open model, which trades away model quality too). The two answer different questions and are now reported separately instead of in one undifferentiated list.

Documented that the implied self-hosting cost assumes full utilisation of the rented GPU and excludes idle capacity, failed requests and operations overhead — it is a floor, not a forecast.

Labelling and presentation only: no computed value changes, and no settled value was altered.

1.1.02026-08-16

TIS now settles three serving operating points per (model, GPU) — volume, balanced, latency — instead of one. Published benchmark curves span roughly 11x between the batch and low-latency ends, which moves the Frontier Premium by more than the difference between any two labs; picking one point silently was indefensible, so all three publish and the reader can switch.

The "balanced" point (interactive serving, ~116 tokens/sec per user) is the documented headline: the API default, the citable figure, and the number in the daily summary.

Throughput table reseeded from InferenceX (SemiAnalysis) for DeepSeek V4 Pro 1.6T on B200 at FP4, replacing the unverified DeepSeek V3 / H200 placeholder — InferenceX reports H200 as unmeasured for this model. Operating points are read from an interpolated published curve, disclosed as such.

Weekly staleness check added: verified throughput citations older than 90 days, or whose source URL stops resolving, raise an alert rather than ageing silently.

1.0.02026-08-16

Initial methodology: TTPI (volume-weighted blended $/MTok per lab, 0.75/0.25 input/output share), TCPI (weighted median $/GPU-hr per GPU from disclosed posted sources), TIS and Frontier Premium (verified-throughput rows only).

Sources: OpenRouter models API (prices), OpenRouter rankings snapshot (volume weights; disclosed with bias), Vast.ai ask book, RunPod GraphQL, Shadeform catalog (19 clouds).

Drop rules: labs below 90% volume coverage or under 2 priced models drop for the day; GPUs under 3 distinct providers drop for the day. Missing data is never interpolated or carried forward.

How prices for individual models are sourced and verified for the Tokenando pricing index is documented separately on the About page.

Pricing-catalogue methodology →

Tokenando indices are informational reference data, not financial products, price quotes, or investment advice. Offered prices are labeled offered; sources, weights, and exclusion rules are fully disclosed in the methodology. Settled values are immutable; corrections ship as new methodology versions, never as silent edits.