@broberg/ai-sdk 0.52.0 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-ZSLRCOYM.js +478 -0
- package/dist/chunk-ZSLRCOYM.js.map +1 -0
- package/dist/index.d.ts +85 -60
- package/dist/index.js +124 -4
- package/dist/index.js.map +1 -1
- package/dist/pricing.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-O4LR6X4U.js +0 -478
- package/dist/chunk-O4LR6X4U.js.map +0 -1
package/dist/chunk-O4LR6X4U.js
DELETED
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
// src/cost/pricing.ts
|
|
2
|
-
var V = "2026-06-02";
|
|
3
|
-
var MS = "2026-06-04-mistral.ai";
|
|
4
|
-
var PRICING = {
|
|
5
|
-
// Anthropic (direct API). DEFAULT_TIER_MAP: fast/cheap=haiku, smart/vision=sonnet, powerful=opus.
|
|
6
|
-
// $1.00/$5.00 — Anthropic's published Haiku 4.5 rate, confirmed against the
|
|
7
|
-
// claude-api skill's model table 2026-09-03. F048: this row said $0.80/$4.00 while
|
|
8
|
-
// "openrouter:anthropic/claude-haiku-4.5" said $1.00/$5.00 — the SAME model at two
|
|
9
|
-
// prices, and the shorter, likelier id carried the wrong one. A consumer pricing
|
|
10
|
-
// 68M haiku tokens (upmetrics' real volume) was told 20% under.
|
|
11
|
-
"anthropic:claude-haiku-4-5": {
|
|
12
|
-
inputPer1M: 1,
|
|
13
|
-
outputPer1M: 5,
|
|
14
|
-
cacheReadPer1M: 0.1,
|
|
15
|
-
cacheWritePer1M: 1.25,
|
|
16
|
-
version: "2026-09-03"
|
|
17
|
-
},
|
|
18
|
-
"anthropic:claude-sonnet-4-6": {
|
|
19
|
-
inputPer1M: 3,
|
|
20
|
-
outputPer1M: 15,
|
|
21
|
-
cacheReadPer1M: 0.3,
|
|
22
|
-
cacheWritePer1M: 3.75,
|
|
23
|
-
version: V
|
|
24
|
-
},
|
|
25
|
-
// $5.00/$25.00 — Anthropic's published Opus 4.8 rate, confirmed against the
|
|
26
|
-
// claude-api skill's model table 2026-09-03.
|
|
27
|
-
//
|
|
28
|
-
// FOUND BY THE CONTRADICTION GUARD ON ITS FIRST RUN, not by a report. This row said
|
|
29
|
-
// $15.00/$75.00 while "openrouter:anthropic/claude-opus-4.8" said $5.00/$25.00 —
|
|
30
|
-
// THREE TIMES too high, the opposite direction from the haiku error and a larger
|
|
31
|
-
// multiple. Nobody had noticed, because both numbers looked like answers.
|
|
32
|
-
"anthropic:claude-opus-4-8": {
|
|
33
|
-
inputPer1M: 5,
|
|
34
|
-
outputPer1M: 25,
|
|
35
|
-
cacheReadPer1M: 0.5,
|
|
36
|
-
cacheWritePer1M: 6.25,
|
|
37
|
-
version: "2026-09-03"
|
|
38
|
-
},
|
|
39
|
-
// OpenAI. embedding default tier = text-embedding-3-small (no output tokens).
|
|
40
|
-
// Cached input is 50% of the input rate — $1.25 vs $2.50 (gpt-4o) and $0.075 vs
|
|
41
|
-
// $0.15 (gpt-4o-mini), read from developers.openai.com/api/docs/pricing on
|
|
42
|
-
// 2026-08-27. NOTE IT IS 50%, NOT the 10% Mistral and Gemini charge: assuming one
|
|
43
|
-
// uniform discount across providers would have understated OpenAI's cost by 4x on
|
|
44
|
-
// the cached half. Caching is automatic above 1,024 tokens — no key, no opt-in.
|
|
45
|
-
// The embedding models list NO cached price (embeddings do not cache), so they
|
|
46
|
-
// deliberately get no row here rather than a guessed one.
|
|
47
|
-
"openai:text-embedding-3-small": { inputPer1M: 0.02, outputPer1M: 0, version: V },
|
|
48
|
-
"openai:text-embedding-3-large": { inputPer1M: 0.13, outputPer1M: 0, version: V },
|
|
49
|
-
"openai:gpt-4o": { inputPer1M: 2.5, cacheReadPer1M: 1.25, outputPer1M: 10, version: "2026-08-27-developers.openai.com" },
|
|
50
|
-
"openai:gpt-4o-mini": { inputPer1M: 0.15, cacheReadPer1M: 0.075, outputPer1M: 0.6, version: "2026-08-27-developers.openai.com" },
|
|
51
|
-
// Whisper is priced per MINUTE — see MEDIA_PRICING in ./media-pricing.ts. It used to
|
|
52
|
-
// sit here as 0/0 "so token-based compute never charges it", and inwardly that worked.
|
|
53
|
-
// Outwardly it did not: getModelPrice("whisper-1") answered `{unit:"per_1m_tokens",
|
|
54
|
-
// inputPer1M: 0}` — i.e. "this model is free" — because media rows are consulted LAST
|
|
55
|
-
// and a token row was already there. The per-minute price was unreachable by its own
|
|
56
|
-
// id. computeCost still returns 0 for it (no entry) and transcribe still computes its
|
|
57
|
-
// own cost, so nothing about billing changed; only the public answer stopped lying.
|
|
58
|
-
// OpenRouter (meta-router — model slugs include the upstream vendor). Slugs use
|
|
59
|
-
// dots (claude-sonnet-4.6) to match OpenRouter's live ids; the dashed forms
|
|
60
|
-
// never matched a real call. Caught by the F014 catalogue research.
|
|
61
|
-
"openrouter:anthropic/claude-sonnet-4.6": { inputPer1M: 3, outputPer1M: 15, version: V },
|
|
62
|
-
// OpenRouter ground-truth $1/$5 — a markup over Anthropic-direct's $0.8/$4
|
|
63
|
-
// (the `anthropic:` entry above). Was masked while the slug used dashes.
|
|
64
|
-
"openrouter:anthropic/claude-haiku-4.5": { inputPer1M: 1, outputPer1M: 5, version: "2026-06-04" },
|
|
65
|
-
"openrouter:google/gemini-2.5-flash": { inputPer1M: 0.3, outputPer1M: 2.5, version: V },
|
|
66
|
-
// Ground-truth from OpenRouter /api/v1/models, re-read 2026-10-02 (F067.5; was 0.279/1.2).
|
|
67
|
-
"openrouter:minimax/minimax-m2.7": {
|
|
68
|
-
inputPer1M: 0.21,
|
|
69
|
-
outputPer1M: 0.84,
|
|
70
|
-
version: "2026-10-02-openrouter-live"
|
|
71
|
-
},
|
|
72
|
-
// DeepSeek V4 (CN-hosted — NOT GDPR-safe; non-personal-data workloads only).
|
|
73
|
-
// On 2026-05-22 DeepSeek made the "75% off" promo the permanent official price.
|
|
74
|
-
// V4-Pro $0.435/$0.87 is ~34x cheaper than GPT-5.5 on output; flash is cheaper
|
|
75
|
-
// still. Numbers match OpenRouter /api/v1/models 1:1 (no router markup). A strong
|
|
76
|
-
// cheap route for fleet background work once `claude -p` is API-billed (15 Jun).
|
|
77
|
-
// Re-read from OpenRouter /api/v1/models 2026-10-02 (F067.5). These moved three
|
|
78
|
-
// times in a month (Sep 3: pro 1.02, Oct 1: flash 0.042, Oct 2: flash 0.028) — an
|
|
79
|
-
// OpenRouter call books usage.cost from the response anyway; this row is the fallback.
|
|
80
|
-
"openrouter:deepseek/deepseek-v4-pro": { inputPer1M: 0.2088, outputPer1M: 0.4176, version: "2026-10-02-openrouter-live" },
|
|
81
|
-
"openrouter:deepseek/deepseek-v4-flash": { inputPer1M: 0.028, outputPer1M: 0.056, version: "2026-10-02-openrouter-live" },
|
|
82
|
-
// DeepSeek DIRECT API (provider "deepseek", F030 non-PII secondary). Rates from
|
|
83
|
-
// api-docs.deepseek.com 2026-06-30 ($0.14/$0.28 per 1M; both map to deepseek-v4-flash).
|
|
84
|
-
// `deepseek-chat` (non-thinking) + `deepseek-reasoner` (thinking) DEPRECATE 2026-07-24.
|
|
85
|
-
// (The bare `deepseek-v4-flash` basename is already priced via the openrouter entry
|
|
86
|
-
// above — kept distinct here to avoid a basename collision in the F027 pricing-API.)
|
|
87
|
-
// Verify against a real key when it lands.
|
|
88
|
-
"deepseek:deepseek-chat": { inputPer1M: 0.14, outputPer1M: 0.28, version: "2026-06-30-deepseek-direct" },
|
|
89
|
-
"deepseek:deepseek-reasoner": { inputPer1M: 0.14, outputPer1M: 0.28, version: "2026-06-30-deepseek-direct" },
|
|
90
|
-
// F066 — TypeSafe Jev. docs.typesafe.ai/models, read 2026-10-01: "$42 per billion
|
|
91
|
-
// tokens (input only)", output free. Priced on the VERSIONED id because the response
|
|
92
|
-
// reports the model that actually ran ("jev-1.13.0") even when you ask for
|
|
93
|
-
// "jev-latest" — so a future version arrives unpriced and is booked as such, rather
|
|
94
|
-
// than inheriting a number nobody checked for it.
|
|
95
|
-
"typesafe:jev-1.13.0": { inputPer1M: 0.042, outputPer1M: 0, version: "2026-10-01-typesafe-official" },
|
|
96
|
-
// Cached input tokens cost 10% of the input rate — $0.03 vs $0.30 (2.5-flash) and
|
|
97
|
-
// $0.01 vs $0.10 (2.5-flash-lite), read from ai.google.dev/gemini-api/docs/pricing
|
|
98
|
-
// on 2026-08-27 rather than recalled. NB the storage fee on that page ($1/1M
|
|
99
|
-
// tokens/hour) applies to EXPLICIT context caching, where you create a CachedContent
|
|
100
|
-
// object with a TTL. We use IMPLICIT caching, which has no storage charge — so this
|
|
101
|
-
// table is not silently under-billing.
|
|
102
|
-
// Google Gemini (direct). Provider key is "gemini" — matches the adapter's
|
|
103
|
-
// usage.provider + the override.provider callers pass. (Image-gen models are
|
|
104
|
-
// priced per-image in the adapter, not here.)
|
|
105
|
-
"gemini:gemini-2.5-flash": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 2.5, version: "2026-08-27-ai.google.dev" },
|
|
106
|
-
// flash-lite is the default `video` tier (F019) — cheap native video understanding.
|
|
107
|
-
"gemini:gemini-2.5-flash-lite": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.4, version: "2026-08-27-ai.google.dev" },
|
|
108
|
-
// Vertex AI (F038) — the EU-resident route to the SAME Gemini models, so Google's
|
|
109
|
-
// published Gemini token prices apply. Listed separately because cost lookups key on
|
|
110
|
-
// `provider:model`: without these rows an EU vision/video call would silently log
|
|
111
|
-
// $0, which is worse than no tracking (a confident wrong number).
|
|
112
|
-
"vertex:gemini-2.5-flash": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 2.5, version: "2026-08-27-ai.google.dev" },
|
|
113
|
-
"vertex:gemini-2.5-flash-lite": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.4, version: "2026-08-27-ai.google.dev" },
|
|
114
|
-
// Cached prompt tokens bill at 10% of the input rate (F039, measured 2026-08-27:
|
|
115
|
-
// an 8,810-token prefix reported 8,784 cached on the second call WITH a
|
|
116
|
-
// prompt_cache_key, and 0 without one at every size up to 57k).
|
|
117
|
-
// Mistral (direct, La Plateforme). Official prices from mistral.ai/pricing
|
|
118
|
-
// (2026-06-04, per Christian's CD report). EU/Paris-hosted — the designated
|
|
119
|
-
// GDPR-safe provider for client/personal-data workloads (see F015). NB:
|
|
120
|
-
// medium-3.5 is the premium "Vibe" coding tier ($1.5/$7.5); Large 3 ($0.5/$1.5)
|
|
121
|
-
// is the cheaper frontier general-purpose model despite the higher number.
|
|
122
|
-
"mistral:mistral-large-latest": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },
|
|
123
|
-
"mistral:mistral-large-2512": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },
|
|
124
|
-
"mistral:mistral-medium-latest": { inputPer1M: 1.5, cacheReadPer1M: 0.15, outputPer1M: 7.5, version: MS },
|
|
125
|
-
"mistral:mistral-medium-3.5": { inputPer1M: 1.5, cacheReadPer1M: 0.15, outputPer1M: 7.5, version: MS },
|
|
126
|
-
"mistral:mistral-medium-3": { inputPer1M: 0.4, cacheReadPer1M: 0.04, outputPer1M: 2, version: "2026-06-04-or-xref" },
|
|
127
|
-
"mistral:mistral-small-latest": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.3, version: MS },
|
|
128
|
-
"mistral:mistral-small-2603": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.3, version: MS },
|
|
129
|
-
"mistral:ministral-3b-latest": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.1, version: MS },
|
|
130
|
-
"mistral:ministral-8b-latest": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0.15, version: MS },
|
|
131
|
-
"mistral:ministral-14b-latest": { inputPer1M: 0.2, cacheReadPer1M: 0.02, outputPer1M: 0.2, version: MS },
|
|
132
|
-
"mistral:magistral-medium-latest": { inputPer1M: 2, cacheReadPer1M: 0.2, outputPer1M: 5, version: MS },
|
|
133
|
-
"mistral:magistral-small-latest": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },
|
|
134
|
-
"mistral:devstral-latest": { inputPer1M: 0.4, cacheReadPer1M: 0.04, outputPer1M: 2, version: MS },
|
|
135
|
-
"mistral:codestral-latest": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 0.9, version: MS },
|
|
136
|
-
"mistral:open-mistral-nemo": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0.15, version: MS },
|
|
137
|
-
// Moderation (F016.4) — per input token; output 0. (OCR is per-page in the adapter.)
|
|
138
|
-
"mistral:mistral-moderation-latest": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0, version: MS },
|
|
139
|
-
// Embeddings (F016.5) — per input token.
|
|
140
|
-
"mistral:mistral-embed": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0, version: MS },
|
|
141
|
-
"mistral:codestral-embed": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0, version: MS },
|
|
142
|
-
// F048 — reported by upmetrics as an unknown model (6 calls). Official mistral.ai/pricing.
|
|
143
|
-
"mistral:pixtral-large-latest": { inputPer1M: 2, cacheReadPer1M: 0.2, outputPer1M: 6, version: "2026-09-03" }
|
|
144
|
-
};
|
|
145
|
-
function stripDatedSuffix(model) {
|
|
146
|
-
return model.replace(/-\d{8}$/, "");
|
|
147
|
-
}
|
|
148
|
-
function getPrice(provider, model) {
|
|
149
|
-
const exact = PRICING[`${provider}:${model}`];
|
|
150
|
-
if (exact) return exact;
|
|
151
|
-
const base = stripDatedSuffix(model);
|
|
152
|
-
if (base !== model) return PRICING[`${provider}:${base}`];
|
|
153
|
-
return void 0;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// src/cost/media-pricing.ts
|
|
157
|
-
var MEDIA_PRICING_CHECKED_AT = "2026-09-05";
|
|
158
|
-
var VEO_PER_SEC = {
|
|
159
|
-
"veo-3.1-generate-preview": { usd: 0.4, source: "ai.google.dev/gemini-api/docs/pricing \u2014 video with audio, 720p/1080p (4K = 0.60)" },
|
|
160
|
-
"veo-3.1-fast-generate-preview": { usd: 0.1, source: "ai.google.dev/gemini-api/docs/pricing \u2014 720p (1080p = 0.12, 4K = 0.30)" },
|
|
161
|
-
"veo-3.1-lite-generate-preview": { usd: 0.05, source: "ai.google.dev/gemini-api/docs/pricing \u2014 720p (1080p = 0.08)" },
|
|
162
|
-
"veo-3.0-generate-001": { usd: 0.4, source: "ai.google.dev/gemini-api/docs/pricing" },
|
|
163
|
-
"veo-3.0-fast-generate-001": { usd: 0.1, source: "ai.google.dev/gemini-api/docs/pricing" }
|
|
164
|
-
};
|
|
165
|
-
var veoRows = (provider) => Object.fromEntries(
|
|
166
|
-
Object.entries(VEO_PER_SEC).map(([model, v]) => [
|
|
167
|
-
`${provider}:${model}`,
|
|
168
|
-
{ unit: "per_sec", usd: v.usd, checkedAt: MEDIA_PRICING_CHECKED_AT, source: v.source }
|
|
169
|
-
])
|
|
170
|
-
);
|
|
171
|
-
var MEDIA_PRICING = {
|
|
172
|
-
...veoRows("gemini"),
|
|
173
|
-
...veoRows("vertex"),
|
|
174
|
-
// fal video — fal's OFFICIAL published per-second rate, not a guess. Kling 2.5
|
|
175
|
-
// Turbo Pro i2v is the blessed FAL_KEY-only image→video route: $0.35 for the
|
|
176
|
-
// first 5 s + $0.07/additional s = a flat $0.07/s at 1080p.
|
|
177
|
-
"fal:fal-ai/kling-video/v2.5-turbo/pro/image-to-video": {
|
|
178
|
-
unit: "per_sec",
|
|
179
|
-
usd: 0.07,
|
|
180
|
-
checkedAt: MEDIA_PRICING_CHECKED_AT,
|
|
181
|
-
source: "fal.ai/models/fal-ai/kling-video/v2.5-turbo/pro/image-to-video"
|
|
182
|
-
},
|
|
183
|
-
// fal images — ESTIMATES. fal bills by megapixel and changes often; fal returns
|
|
184
|
-
// no price with the result, so a call costed from these carries
|
|
185
|
-
// `costBasis: "estimated"`. Override per call with config.pricePerImage.
|
|
186
|
-
"fal:fal-ai/flux/schnell": { unit: "per_image", usd: 3e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai pricing \u2014 estimate, billed by megapixel" },
|
|
187
|
-
"fal:fal-ai/flux/dev": { unit: "per_image", usd: 0.025, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai pricing \u2014 estimate, billed by megapixel" },
|
|
188
|
-
"fal:fal-ai/flux-lora": { unit: "per_image", usd: 0.025, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai pricing \u2014 estimate, billed by megapixel" },
|
|
189
|
-
"fal:fal-ai/flux-pro": { unit: "per_image", usd: 0.05, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai pricing \u2014 estimate, billed by megapixel" },
|
|
190
|
-
"fal:fal-ai/flux-pro/v1.1": { unit: "per_image", usd: 0.04, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai pricing \u2014 estimate, billed by megapixel" },
|
|
191
|
-
// BFL — the fallback only. BFL RETURNS the real billed cost in credits, so a
|
|
192
|
-
// normal call is `costBasis: "reported"` and never reads this row.
|
|
193
|
-
"bfl:flux-pro-1.1-ultra-finetuned": {
|
|
194
|
-
unit: "per_image",
|
|
195
|
-
usd: 0.06,
|
|
196
|
-
checkedAt: MEDIA_PRICING_CHECKED_AT,
|
|
197
|
-
source: "bfl.ai/pricing \u2014 estimate; used only when BFL omits the credit cost"
|
|
198
|
-
},
|
|
199
|
-
// Gemini images — billed per image, not per token. Google's price RISES with
|
|
200
|
-
// resolution; these are the common 1K/1024px default.
|
|
201
|
-
"gemini:gemini-2.5-flash-image": { unit: "per_image", usd: 0.039, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "ai.google.dev/gemini-api/docs/pricing \u2014 'nano-banana', 1024px = 1290 tok" },
|
|
202
|
-
"gemini:gemini-3.1-flash-image": { unit: "per_image", usd: 0.067, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "ai.google.dev/gemini-api/docs/pricing \u2014 1K; 2K=0.101, 4K=0.151" },
|
|
203
|
-
"gemini:gemini-3.1-flash-image-preview": { unit: "per_image", usd: 0.067, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "ai.google.dev/gemini-api/docs/pricing \u2014 1K; 2K=0.101, 4K=0.151" },
|
|
204
|
-
"gemini:gemini-3-pro-image": { unit: "per_image", usd: 0.134, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "ai.google.dev/gemini-api/docs/pricing \u2014 premium; 1K/2K=0.134, 4K=0.24" },
|
|
205
|
-
"gemini:gemini-3-pro-image-preview": { unit: "per_image", usd: 0.134, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "ai.google.dev/gemini-api/docs/pricing \u2014 premium; was mistakenly the flash price once" },
|
|
206
|
-
// OpenRouter images — the FALLBACK only. OpenRouter usually returns usage.cost.
|
|
207
|
-
"openrouter:recraft/recraft-v4.1": { unit: "per_image", usd: 0.035, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openrouter.ai/recraft/recraft-v4.1 \u2014 fallback when usage.cost is omitted" },
|
|
208
|
-
"openrouter:recraft/recraft-v4.1-vector": { unit: "per_image", usd: 0.08, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openrouter.ai/recraft/recraft-v4.1-vector \u2014 fallback when usage.cost is omitted" },
|
|
209
|
-
// F063: OpenRouter prices Recraft per image-token; both rows above are that rate
|
|
210
|
-
// x 4175 tokens/image exactly, so these use the same factor (measured 27/9 off
|
|
211
|
-
// /api/v1/models?output_modalities=image).
|
|
212
|
-
"openrouter:recraft/recraft-v4.1-pro-vector": { unit: "per_image", usd: 0.3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openrouter.ai/api/v1/models, measured 2026-09-27 \u2014 image_token 7.186e-5 x 4175; fallback when usage.cost is omitted" },
|
|
213
|
-
"openrouter:recraft/recraft-v4.1-pro": { unit: "per_image", usd: 0.21, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openrouter.ai/api/v1/models, measured 2026-09-27 \u2014 image_token 5.030e-5 x 4175; fallback when usage.cost is omitted" },
|
|
214
|
-
// Speech OUT — billed per 1000 characters of input text.
|
|
215
|
-
"azure:tts": { unit: "per_1k_chars", usd: 0.016, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "azure.microsoft.com/pricing \u2014 neural standard, $16/1M chars" },
|
|
216
|
-
"elevenlabs:tts": { unit: "per_1k_chars", usd: 0.15, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "elevenlabs.io/pricing \u2014 API overage approx $0.10-0.18/1k chars; ESTIMATE" },
|
|
217
|
-
// Translation — per 1000 characters. Free tier (":fx" key, within quota) is truly $0;
|
|
218
|
-
// this rate only bites past the Pro allowance.
|
|
219
|
-
"deepl:translate": { unit: "per_1k_chars", usd: 0.0217, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "deepl.com/pro-api \u2014 ESTIMATE, conflicting tier reports; verify before a budget decision" },
|
|
220
|
-
// Speech IN — billed per audio-minute.
|
|
221
|
-
"azure:stt": { unit: "per_min", usd: 0.0167, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "azure.microsoft.com/pricing \u2014 standard STT, $1/audio-hour" },
|
|
222
|
-
"openai:whisper-1": { unit: "per_min", usd: 6e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openai.com/api/pricing \u2014 Whisper" },
|
|
223
|
-
"mistral:voxtral-mini-latest": { unit: "per_min", usd: 2e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "mistral.ai/pricing \u2014 Voxtral" },
|
|
224
|
-
"mistral:voxtral-mini-2507": { unit: "per_min", usd: 2e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "mistral.ai/pricing \u2014 Voxtral" },
|
|
225
|
-
"mistral:voxtral-mini-2602": { unit: "per_min", usd: 2e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "mistral.ai/pricing \u2014 Voxtral" },
|
|
226
|
-
// OCR — per page.
|
|
227
|
-
"mistral:ocr": { unit: "per_page", usd: 4e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "Mistral mail 2026-09-30 (OCR 4.1): $4/1000 pages direct; $2/1000 is the Batch-API price, which ai.ocr does not use" },
|
|
228
|
-
// A flat fee per training run, not per anything produced.
|
|
229
|
-
"fal:train": { unit: "per_training", usd: 2, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai/models/fal-ai/flux-lora-fast-training \u2014 approx $2, ESTIMATE" }
|
|
230
|
-
};
|
|
231
|
-
var DEFAULT_CLIP_SEC = 8;
|
|
232
|
-
function getMediaPrice(provider, model) {
|
|
233
|
-
return MEDIA_PRICING[`${provider}:${model}`];
|
|
234
|
-
}
|
|
235
|
-
function mediaUnitCounts() {
|
|
236
|
-
const counts = {
|
|
237
|
-
per_sec: 0,
|
|
238
|
-
per_image: 0,
|
|
239
|
-
per_1k_chars: 0,
|
|
240
|
-
per_min: 0,
|
|
241
|
-
per_page: 0,
|
|
242
|
-
per_training: 0
|
|
243
|
-
};
|
|
244
|
-
for (const p of Object.values(MEDIA_PRICING)) counts[p.unit]++;
|
|
245
|
-
return counts;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// src/catalogue/pricing-data.ts
|
|
249
|
-
var PRICING_GENERATED_AT = "2026-10-02T19:58:37.222Z";
|
|
250
|
-
var PRICING_CHECKED_AT = "2026-10-02T19:58:37.222Z";
|
|
251
|
-
var PRICING_DATA = [{ "provider": "inclusionai", "model": "inclusionai/ling-3.1-flash", "name": "inclusionAI: Ling 3.1 Flash", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "apodex", "model": "apodex/apodex-1.1-mini:free", "name": "Apodex: Apodex 1.1 Mini (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "unbiased", "model": "unbiased/pareto-26.10-preview", "name": "Pareto 26.10 Preview", "input": 0.7999999999999999, "output": 3.1999999999999997, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-6.1-sol-pro", "name": "OpenAI: GPT-6.1 Sol Pro", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6.1-sol", "name": "OpenAI: GPT-6.1 Sol", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5.5", "name": "Anthropic: Claude Sonnet 5.5", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5.5:batch", "name": "Anthropic: Claude Sonnet 5.5 (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "typesafe", "model": "typesafe/jev-router", "name": "TypeSafe: Jev Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "perceptron", "model": "perceptron/perceptron-mk1.5", "name": "Perceptron: Perceptron Mk1.5", "input": 0.15, "output": 1.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "fireworks", "model": "fireworks/ember-1", "name": "Fireworks: Ember-1", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "other" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-prime", "name": "Z.ai: GLM 5.3 Prime", "input": 2.8, "output": 8.8, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.8-max-prime", "name": "Qwen: Qwen3.8 Max Prime", "input": 4, "output": 12, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "stealth", "model": "stealth/space-bunny-alpha", "name": "Space Bunny Alpha", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.5-mini", "name": "AionLabs: Aion 3.5 Mini", "input": 0.7, "output": 1.4, "unit": "per_1m_tokens", "region": "other" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.5", "name": "AionLabs: Aion 3.5", "input": 3, "output": 6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "upstage", "model": "upstage/solar-mini4", "name": "Upstage: Solar Mini 4", "input": 0.049999999999999996, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "cohere", "model": "cohere/command-a-plus", "name": "Cohere: Command A+", "input": 0.3, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-luna-pro", "name": "OpenAI: GPT-6 Luna Pro", "input": 0.09999999999999999, "output": 0.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-luna-pro:batch", "name": "OpenAI: GPT-6 Luna Pro (batch)", "input": 0.049999999999999996, "output": 0.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-luna", "name": "OpenAI: GPT-6 Luna", "input": 0.09999999999999999, "output": 0.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-luna:batch", "name": "OpenAI: GPT-6 Luna (batch)", "input": 0.049999999999999996, "output": 0.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-sol-pro", "name": "OpenAI: GPT-6 Sol Pro", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-sol-pro:batch", "name": "OpenAI: GPT-6 Sol Pro (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-sol", "name": "OpenAI: GPT-6 Sol", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-sol:batch", "name": "OpenAI: GPT-6 Sol (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5.5", "name": "Anthropic: Claude Opus 5.5", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5.5:batch", "name": "Anthropic: Claude Opus 5.5 (batch)", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.6-pro-ultraspeed", "name": "Xiaomi: MiMo-V2.6-Pro-UltraSpeed", "input": 4.35, "output": 8.7, "unit": "per_1m_tokens", "region": "other" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.6-flash", "name": "Xiaomi: MiMo-V2.6-Flash", "input": 0.14, "output": 0.28, "unit": "per_1m_tokens", "region": "other" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.6-pro", "name": "Xiaomi: MiMo-V2.6-Pro", "input": 0.435, "output": 0.87, "unit": "per_1m_tokens", "region": "other" }, { "provider": "x-ai", "model": "x-ai/grok-4.7", "name": "SpaceXAI: Grok 4.7", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.8-omni-flash", "name": "Qwen: Qwen3.8 Omni Flash", "input": 0.15, "output": 0.47, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "prism-ml", "model": "prism-ml/ternary-bonsai-2-27b", "name": "PrismML: Ternary Bonsai 2 27B", "input": 0.075, "output": 0.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-flashx", "name": "Z.ai: GLM 5.3 FlashX", "input": 0.37, "output": 1.25, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "unbiased", "model": "unbiased/pareto", "name": "Pareto", "input": 2.5, "output": 7.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-pro-latest", "name": "DeepSeek: DeepSeek Pro Latest", "input": 0.13199999999999998, "output": 0.396, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-flash-latest", "name": "DeepSeek: DeepSeek Flash Latest", "input": 0.02, "output": 0.6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "inference-net", "model": "inference-net/schematron-v2-turbo", "name": "Inference.net: Schematron V2 Turbo", "input": 0.03, "output": 0.15, "unit": "per_1m_tokens", "region": "other" }, { "provider": "inference-net", "model": "inference-net/schematron-v2-small", "name": "Inference.net: Schematron V2 Small", "input": 0.049999999999999996, "output": 0.22999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~openai", "model": "~openai/gpt-astra-latest", "name": "OpenAI: GPT Astra Latest", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~openai", "model": "~openai/gpt-sol-latest", "name": "OpenAI: GPT Sol Latest", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~openai", "model": "~openai/gpt-terra-latest", "name": "OpenAI: GPT Terra Latest", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~openai", "model": "~openai/gpt-luna-latest", "name": "OpenAI: GPT Luna Latest", "input": 0.09999999999999999, "output": 0.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "sakana", "model": "sakana/fugu-ultra-v2", "name": "Sakana: Fugu Ultra v2", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "other" }, { "provider": "sakana", "model": "sakana/fugu-max", "name": "Sakana: Fugu Max", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash-vl", "name": "inclusionAI: Ling 3.0 Flash VL", "input": 0.020999999999999998, "output": 0.061599999999999995, "unit": "per_1m_tokens", "region": "other" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4.1-flash", "name": "DeepSeek: DeepSeek V4.1 Flash", "input": 0.02, "output": 0.6, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4.1-flash:batch", "name": "DeepSeek: DeepSeek V4.1 Flash (batch)", "input": 0.112, "output": 0.33599999999999997, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "inception", "model": "inception/mercury-2.5", "name": "Inception: Mercury 2.5", "input": 0.04, "output": 0.15, "unit": "per_1m_tokens", "region": "other" }, { "provider": "nex-agi", "model": "nex-agi/nex-n2.5-mini", "name": "Nex AGI: Nex-N2.5-Mini", "input": 0.024999999999999998, "output": 0.09999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "nex-agi", "model": "nex-agi/nex-n2.5-pro", "name": "Nex AGI: Nex-N2.5-Pro", "input": 0.075, "output": 0.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-6-astra", "name": "OpenAI: GPT-6 Astra", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-astra:batch", "name": "OpenAI: GPT-6 Astra (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-astra-pro", "name": "OpenAI: GPT-6 Astra Pro", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-6-astra-pro:batch", "name": "OpenAI: GPT-6 Astra Pro (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash-sante:free", "name": "inclusionAI: Ling 3.0 Flash Sante (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.8-max-0902", "name": "Qwen: Qwen3.8 Max (0902)", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "meta", "model": "meta/muse-spark-1.3-contributor", "name": "Meta: Muse Spark 1.3 Contributor", "input": 0.09999999999999999, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "meta", "model": "meta/muse-spark-1.3", "name": "Meta: Muse Spark 1.3", "input": 1.25, "output": 4.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.8-flash", "name": "Google: Gemini 3.8 Flash", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.8-flash:batch", "name": "Google: Gemini 3.8 Flash (batch)", "input": 0.375, "output": 1.875, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5.1", "name": "Anthropic: Claude Fable 5.1", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5.1:batch", "name": "Anthropic: Claude Fable 5.1 (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "ibm-granite", "model": "ibm-granite/granite-4.2-8b", "name": "IBM: Granite 4.2 8B", "input": 0.06, "output": 0.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "tencent", "model": "tencent/hy4-preview", "name": "Tencent: Hy4 preview", "input": 0.7505999999999999, "output": 2.2509, "unit": "per_1m_tokens", "region": "other" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash-fin", "name": "inclusionAI: Ling 3.0 Flash Fin", "input": 0.06, "output": 0.18, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~z-ai", "model": "~z-ai/glm-flash-latest", "name": "Z.ai: GLM Flash Latest", "input": 0.02625, "output": 0.9287489999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.8-flash", "name": "Qwen: Qwen3.8 Flash", "input": 0.15, "output": 0.47, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-flash", "name": "Z.ai: GLM 5.3 Flash", "input": 0.15, "output": 0.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-flash:batch", "name": "Z.ai: GLM 5.3 Flash (batch)", "input": 0.06, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "meta", "model": "meta/muse-spark-1.2-contributor", "name": "Meta: Muse Spark 1.2 Contributor", "input": 0.09999999999999999, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek: DeepSeek V4 Flash Vision Exp", "input": 0.21559999999999999, "output": 0.6468, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "tencent", "model": "tencent/hy-mt2-1.8b", "name": "Tencent: Hy-MT2-1.8B", "input": 0.044, "output": 0.17700000000000002, "unit": "per_1m_tokens", "region": "other" }, { "provider": "tencent", "model": "tencent/hy-mt2-30b-a3b", "name": "Tencent: Hy-MT2-30B-A3B", "input": 0.074, "output": 0.295, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~z-ai", "model": "~z-ai/glm-latest", "name": "Z.ai: GLM Latest", "input": 0.12, "output": 4, "unit": "per_1m_tokens", "region": "other" }, { "provider": "tencent", "model": "tencent/hy-mt2-7b", "name": "Tencent: Hy-MT2-7B", "input": 0.074, "output": 0.295, "unit": "per_1m_tokens", "region": "other" }, { "provider": "z-ai", "model": "z-ai/glm-5.3", "name": "Z.ai: GLM 5.3", "input": 1.4, "output": 4.4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-5.3:batch", "name": "Z.ai: GLM 5.3 (batch)", "input": 0.44999999999999996, "output": 2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.8-27b", "name": "Qwen: Qwen3.8 27B", "input": 0.42, "output": 3, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.8-27b:free", "name": "Qwen: Qwen3.8 27B (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "dots-studio", "model": "dots-studio/dots-3-note-preview:free", "name": "Dots Studio: Dots3-Note Preview (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.7-flash", "name": "Google: Gemini 3.7 Flash", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.7-flash:batch", "name": "Google: Gemini 3.7 Flash (batch)", "input": 0.375, "output": 1.875, "unit": "per_1m_tokens", "region": "us" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-2-1-turbo", "name": "ByteDance Seed: Seed 2.1 Turbo", "input": 0.5, "output": 2.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.8-2.4t-a95b", "name": "Qwen: Qwen3.8 2.4T A95B", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-2.0-code", "name": "ByteDance Seed: Seed-2.0-Code", "input": 0.5, "output": 3, "unit": "per_1m_tokens", "region": "other" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-pro-0813", "name": "DeepSeek: DeepSeek V4 Pro 0813", "input": 0.66, "output": 1.9800000000000002, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "x-ai", "model": "x-ai/grok-4.6", "name": "SpaceXAI: Grok 4.6", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "liquid", "model": "liquid/lfm-2.5-2.6b:free", "name": "LiquidAI: LFM2.5-2.6B (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-lightning", "name": "NVIDIA: Nemotron 3.5 Lightning", "input": 0.06, "output": 0.16, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-lightning:free", "name": "NVIDIA: Nemotron 3.5 Lightning (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "sakana", "model": "sakana/sakana-namazu", "name": "Sakana: Sakana Namazu", "input": 0.95, "output": 4, "unit": "per_1m_tokens", "region": "other" }, { "provider": "upstage", "model": "upstage/solar-pro4", "name": "Upstage: Solar Pro 4", "input": 0.09, "output": 0.36, "unit": "per_1m_tokens", "region": "other" }, { "provider": "meta", "model": "meta/muse-glimmer-30b", "name": "Meta: Muse Glimmer 30B", "input": 0.35, "output": 1.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "meta", "model": "meta/muse-spark-1.2", "name": "Meta: Muse Spark 1.2", "input": 1.25, "output": 4.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-v4-flash-latest", "name": "DeepSeek: DeepSeek V4 Flash Latest", "input": 5775e-6, "output": 0.948024, "unit": "per_1m_tokens", "region": "other" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek: DeepSeek V4 Flash 0731", "input": 0.007699999999999999, "output": 1.28, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling-small", "name": "Thinking Machines: Inkling Small", "input": 0.44999999999999996, "output": 1.2, "unit": "per_1m_tokens", "region": "other" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling-small:free", "name": "Thinking Machines: Inkling Small (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.7-flash", "name": "Qwen: Qwen3.7 Flash", "input": 0.03, "output": 0.13, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5", "name": "Anthropic: Claude Opus 5", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5:batch", "name": "Anthropic: Claude Opus 5 (batch)", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash", "name": "inclusionAI: Ling 3.0 Flash", "input": 0.020999999999999998, "output": 0.063, "unit": "per_1m_tokens", "region": "other" }, { "provider": "poolside", "model": "poolside/laguna-s-2.1", "name": "Poolside: Laguna S 2.1", "input": 0.09, "output": 0.18, "unit": "per_1m_tokens", "region": "other" }, { "provider": "poolside", "model": "poolside/laguna-s-2.1:free", "name": "Poolside: Laguna S 2.1 (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.6-flash", "name": "Google: Gemini 3.6 Flash", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.6-flash:batch", "name": "Google: Gemini 3.6 Flash (batch)", "input": 0.375, "output": 1.875, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.5-flash-lite", "name": "Google: Gemini 3.5 Flash Lite", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.5-flash-lite:batch", "name": "Google: Gemini 3.5 Flash Lite (batch)", "input": 0.15, "output": 1.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meituan", "model": "meituan/longcat-2.0", "name": "Meituan: LongCat 2.0", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "other" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling", "name": "Thinking Machines: Inkling", "input": 0.95, "output": 4.05, "unit": "per_1m_tokens", "region": "other" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling:free", "name": "Thinking Machines: Inkling (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openrouter", "model": "openrouter/auto-beta", "name": "Auto Router (Beta)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k3", "name": "MoonshotAI: Kimi K3", "input": 2.7, "output": 13.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k3:batch", "name": "MoonshotAI: Kimi K3 (batch)", "input": 2.2800000000000002, "output": 11.399999999999999, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "meta", "model": "meta/muse-spark-1.1", "name": "Meta: Muse Spark 1.1", "input": 1.25, "output": 4.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "kwaipilot", "model": "kwaipilot/kat-coder-pro-v2.5", "name": "Kwaipilot: KAT-Coder-Pro V2.5", "input": 0.74, "output": 2.96, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-5.6-luna-pro", "name": "OpenAI: GPT-5.6 Luna Pro", "input": 0.19999999999999998, "output": 1.2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-luna-pro:batch", "name": "OpenAI: GPT-5.6 Luna Pro (batch)", "input": 0.09999999999999999, "output": 0.6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-luna", "name": "OpenAI: GPT-5.6 Luna", "input": 0.19999999999999998, "output": 1.2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-luna:batch", "name": "OpenAI: GPT-5.6 Luna (batch)", "input": 0.09999999999999999, "output": 0.6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-terra-pro", "name": "OpenAI: GPT-5.6 Terra Pro", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-terra-pro:batch", "name": "OpenAI: GPT-5.6 Terra Pro (batch)", "input": 1, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-terra", "name": "OpenAI: GPT-5.6 Terra", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-terra:batch", "name": "OpenAI: GPT-5.6 Terra (batch)", "input": 1, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-sol-pro", "name": "OpenAI: GPT-5.6 Sol Pro", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-sol-pro:batch", "name": "OpenAI: GPT-5.6 Sol Pro (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-sol", "name": "OpenAI: GPT-5.6 Sol", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.6-sol:batch", "name": "OpenAI: GPT-5.6 Sol (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "x-ai", "model": "x-ai/grok-4.5", "name": "SpaceXAI: Grok 4.5", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "~x-ai", "model": "~x-ai/grok-latest", "name": "xAI: Grok Latest", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.0-mini", "name": "AionLabs: Aion-3.0-Mini", "input": 0.7, "output": 1.4, "unit": "per_1m_tokens", "region": "other" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.0", "name": "AionLabs: Aion-3.0", "input": 3, "output": 6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "tencent", "model": "tencent/hy3", "name": "Tencent: Hy3", "input": 0.0825, "output": 0.33, "unit": "per_1m_tokens", "region": "other" }, { "provider": "poolside", "model": "poolside/laguna-xs-2.1", "name": "Poolside: Laguna XS 2.1", "input": 0.06, "output": 0.12, "unit": "per_1m_tokens", "region": "other" }, { "provider": "poolside", "model": "poolside/laguna-xs-2.1:free", "name": "Poolside: Laguna XS 2.1 (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5", "name": "Anthropic: Claude Sonnet 5", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5:batch", "name": "Anthropic: Claude Sonnet 5 (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.1-flash-lite-image", "name": "Google: Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image)", "input": 0.25, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "sakana", "model": "sakana/fugu-ultra", "name": "Sakana: Fugu Ultra", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.1-flash-image", "name": "Google: Nano Banana 2 (Gemini 3.1 Flash Image)", "input": 0.5, "output": 3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3-pro-image", "name": "Google: Nano Banana Pro (Gemini 3 Pro Image)", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "cohere", "model": "cohere/north-mini-code:free", "name": "Cohere: North Mini Code (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "z-ai", "model": "z-ai/glm-5.2", "name": "Z.ai: GLM 5.2", "input": 0.41, "output": 3.9899999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openrouter", "model": "openrouter/fusion", "name": "OpenRouter: Fusion", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2.7-code", "name": "MoonshotAI: Kimi K2.7 Code", "input": 0.6712, "output": 3.35, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "~anthropic", "model": "~anthropic/claude-fable-latest", "name": "Anthropic: Claude Fable Latest", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "other" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5", "name": "Anthropic: Claude Fable 5", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5:batch", "name": "Anthropic: Claude Fable 5 (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-content-safety", "name": "NVIDIA: Nemotron 3.5 Content Safety", "input": 0.19999999999999998, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-content-safety:free", "name": "NVIDIA: Nemotron 3.5 Content Safety (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-ultra-550b-a55b", "name": "NVIDIA: Nemotron 3 Ultra", "input": 0.6, "output": 2.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-ultra-550b-a55b:free", "name": "NVIDIA: Nemotron 3 Ultra (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.7-plus", "name": "Qwen: Qwen3.7 Plus", "input": 0.32, "output": 1.28, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "minimax", "model": "minimax/minimax-m3", "name": "MiniMax: MiniMax M3", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "stepfun", "model": "stepfun/step-3.7-flash", "name": "StepFun: Step 3.7 Flash", "input": 0.19999999999999998, "output": 1.15, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.8", "name": "Anthropic: Claude Opus 4.8", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.8:batch", "name": "Anthropic: Claude Opus 4.8 (batch)", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.7-max", "name": "Qwen: Qwen3.7 Max", "input": 1.475, "output": 4.425, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "x-ai", "model": "x-ai/grok-build-0.1", "name": "SpaceXAI: Grok Build 0.1", "input": 1, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.5-flash", "name": "Google: Gemini 3.5 Flash", "input": 1.5, "output": 9, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.5-flash:batch", "name": "Google: Gemini 3.5 Flash (batch)", "input": 0.75, "output": 4.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "perceptron", "model": "perceptron/perceptron-mk1", "name": "Perceptron: Perceptron Mk1", "input": 0.15, "output": 1.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.1-flash-lite", "name": "Google: Gemini 3.1 Flash Lite", "input": 0.25, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.1-flash-lite:batch", "name": "Google: Gemini 3.1 Flash Lite (batch)", "input": 0.125, "output": 0.75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-chat-latest", "name": "OpenAI: GPT Chat Latest", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "us" }, { "provider": "x-ai", "model": "x-ai/grok-4.3", "name": "SpaceXAI: Grok 4.3", "input": 1.25, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "x-ai", "model": "x-ai/grok-4.3:batch", "name": "SpaceXAI: Grok 4.3 (batch)", "input": 1, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3-5", "name": "Mistral: Mistral Medium 3.5", "input": 1.5, "output": 7.5, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3-5:batch", "name": "Mistral: Mistral Medium 3.5 (batch)", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", "name": "NVIDIA: Nemotron 3 Nano Omni (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "~anthropic", "model": "~anthropic/claude-haiku-latest", "name": "Anthropic: Claude Haiku Latest", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~openai", "model": "~openai/gpt-mini-latest", "name": "OpenAI: GPT Mini Latest", "input": 0.75, "output": 4.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~google", "model": "~google/gemini-pro-latest", "name": "Google: Gemini Pro Latest", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~moonshotai", "model": "~moonshotai/kimi-latest", "name": "MoonshotAI: Kimi Latest", "input": 1.3900000000000001, "output": 13, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~google", "model": "~google/gemini-flash-latest", "name": "Google: Gemini Flash Latest", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "other" }, { "provider": "~anthropic", "model": "~anthropic/claude-sonnet-latest", "name": "Anthropic: Claude Sonnet Latest", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.5-plus-20260420", "name": "Qwen: Qwen3.5 Plus 2026-04-20", "input": 0.3, "output": 1.7999999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.6-flash", "name": "Qwen: Qwen3.6 Flash", "input": 0.1875, "output": 1.125, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.6-35b-a3b", "name": "Qwen: Qwen3.6 35B A3B", "input": 0.15, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.6-max-preview", "name": "Qwen: Qwen3.6 Max Preview", "input": 1.0270000000000001, "output": 6.162, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.6-27b", "name": "Qwen: Qwen3.6 27B", "input": 0.32, "output": 3.1999999999999997, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5.5-pro", "name": "OpenAI: GPT-5.5 Pro", "input": 30, "output": 180, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.5-pro:batch", "name": "OpenAI: GPT-5.5 Pro (batch)", "input": 15, "output": 90, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.5", "name": "OpenAI: GPT-5.5", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.5:batch", "name": "OpenAI: GPT-5.5 (batch)", "input": 2.5, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-pro", "name": "DeepSeek: DeepSeek V4 Pro 0423", "input": 0.20879999999999999, "output": 0.41759999999999997, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash", "name": "DeepSeek: DeepSeek V4 Flash 0423", "input": 0.028, "output": 0.056, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "tencent", "model": "tencent/hy3-preview", "name": "Tencent: Hy3 preview", "input": 0.18, "output": 0.6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.5-pro", "name": "Xiaomi: MiMo-V2.5-Pro", "input": 0.435, "output": 0.87, "unit": "per_1m_tokens", "region": "other" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.5", "name": "Xiaomi: MiMo-V2.5", "input": 0.14, "output": 0.28, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-5.4-image-2", "name": "OpenAI: GPT-5.4 Image 2", "input": 8, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "~anthropic", "model": "~anthropic/claude-opus-latest", "name": "Anthropic: Claude Opus Latest", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openrouter", "model": "openrouter/pareto-code", "name": "Pareto Code Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2.6", "name": "MoonshotAI: Kimi K2.6", "input": 0.43415, "output": 1.8279999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.7", "name": "Anthropic: Claude Opus 4.7", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.7:batch", "name": "Anthropic: Claude Opus 4.7 (batch)", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "z-ai", "model": "z-ai/glm-5.1", "name": "Z.ai: GLM 5.1", "input": 0.9646, "output": 3.0316, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "google", "model": "google/gemma-4-26b-a4b-it", "name": "Google: Gemma 4 26B A4B ", "input": 0.0675, "output": 0.22499999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemma-4-26b-a4b-it:free", "name": "Google: Gemma 4 26B A4B (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemma-4-31b-it", "name": "Google: Gemma 4 31B", "input": 0.09, "output": 0.33999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemma-4-31b-it:free", "name": "Google: Gemma 4 31B (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.6-plus", "name": "Qwen: Qwen3.6 Plus", "input": 0.325, "output": 1.95, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-5v-turbo", "name": "Z.ai: GLM 5V Turbo", "input": 1.2, "output": 4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "arcee-ai", "model": "arcee-ai/trinity-large-thinking", "name": "Arcee AI: Trinity Large Thinking", "input": 0.25, "output": 0.7999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "x-ai", "model": "x-ai/grok-4.20-multi-agent", "name": "SpaceXAI: Grok 4.20 Multi-Agent", "input": 1.25, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "x-ai", "model": "x-ai/grok-4.20", "name": "SpaceXAI: Grok 4.20", "input": 1.25, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/lyria-3-pro-preview", "name": "Google: Lyria 3 Pro Preview", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/lyria-3-clip-preview", "name": "Google: Lyria 3 Clip Preview", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "rekaai", "model": "rekaai/reka-edge", "name": "Reka Edge", "input": 0.09999999999999999, "output": 0.09999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "minimax", "model": "minimax/minimax-m2.7", "name": "MiniMax: MiniMax M2.7", "input": 0.21, "output": 0.84, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5.4-nano", "name": "OpenAI: GPT-5.4 Nano", "input": 0.19999999999999998, "output": 1.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4-nano:batch", "name": "OpenAI: GPT-5.4 Nano (batch)", "input": 0.09999999999999999, "output": 0.625, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4-mini", "name": "OpenAI: GPT-5.4 Mini", "input": 0.75, "output": 4.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4-mini:batch", "name": "OpenAI: GPT-5.4 Mini (batch)", "input": 0.375, "output": 2.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-small-2603", "name": "Mistral: Mistral Small 4", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/mistral-small-2603:batch", "name": "Mistral: Mistral Small 4 (batch)", "input": 0.075, "output": 0.3, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "z-ai", "model": "z-ai/glm-5-turbo", "name": "Z.ai: GLM 5 Turbo", "input": 1.2, "output": 4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-super-120b-a12b", "name": "NVIDIA: Nemotron 3 Super", "input": 0.08, "output": 0.44999999999999996, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-super-120b-a12b:free", "name": "NVIDIA: Nemotron 3 Super (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-2.0-lite", "name": "ByteDance Seed: Seed-2.0-Lite", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3.5-9b", "name": "Qwen: Qwen3.5-9B", "input": 0.09999999999999999, "output": 0.15, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5.4-pro", "name": "OpenAI: GPT-5.4 Pro", "input": 30, "output": 180, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4-pro:batch", "name": "OpenAI: GPT-5.4 Pro (batch)", "input": 15, "output": 90, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4", "name": "OpenAI: GPT-5.4", "input": 2.5, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.4:batch", "name": "OpenAI: GPT-5.4 (batch)", "input": 1.25, "output": 7.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "inception", "model": "inception/mercury-2", "name": "Inception: Mercury 2", "input": 0.25, "output": 0.75, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.1-flash-lite-preview", "name": "Google: Gemini 3.1 Flash Lite Preview", "input": 0.25, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-2.0-mini", "name": "ByteDance Seed: Seed-2.0-Mini", "input": 0.09999999999999999, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.1-flash-image-preview", "name": "Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)", "input": 0.5, "output": 3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.5-35b-a3b", "name": "Qwen: Qwen3.5-35B-A3B", "input": 0.15, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.5-27b", "name": "Qwen: Qwen3.5-27B", "input": 0.195, "output": 1.56, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.5-122b-a10b", "name": "Qwen: Qwen3.5-122B-A10B", "input": 0.26, "output": 2.08, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.5-flash-02-23", "name": "Qwen: Qwen3.5-Flash", "input": 0.065, "output": 0.26, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "google", "model": "google/gemini-3.1-pro-preview-customtools", "name": "Google: Gemini 3.1 Pro Preview Custom Tools", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.3-codex", "name": "OpenAI: GPT-5.3-Codex", "input": 1.75, "output": 14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "aion-labs", "model": "aion-labs/aion-2.0", "name": "AionLabs: Aion-2.0", "input": 0.7999999999999999, "output": 1.5999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-3.1-pro-preview", "name": "Google: Gemini 3.1 Pro Preview", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3.1-pro-preview:batch", "name": "Google: Gemini 3.1 Pro Preview (batch)", "input": 1, "output": 6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.6", "name": "Anthropic: Claude Sonnet 4.6", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.6:batch", "name": "Anthropic: Claude Sonnet 4.6 (batch)", "input": 1.5, "output": 7.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3.5-plus-02-15", "name": "Qwen: Qwen3.5 Plus 2026-02-15", "input": 0.26, "output": 1.56, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3.5-397b-a17b", "name": "Qwen: Qwen3.5 397B A17B", "input": 0.55, "output": 3.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "minimax", "model": "minimax/minimax-m2.5", "name": "MiniMax: MiniMax M2.5", "input": 0.27, "output": 1.08, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-5", "name": "Z.ai: GLM 5", "input": 0.6, "output": 1.92, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-max-thinking", "name": "Qwen: Qwen3 Max Thinking", "input": 0.78, "output": 3.9, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.6", "name": "Anthropic: Claude Opus 4.6", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.6:batch", "name": "Anthropic: Claude Opus 4.6 (batch)", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3-coder-next", "name": "Qwen: Qwen3 Coder Next", "input": 0.12, "output": 0.7999999999999999, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openrouter", "model": "openrouter/free", "name": "Free Models Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "stepfun", "model": "stepfun/step-3.5-flash", "name": "StepFun: Step 3.5 Flash", "input": 0.09999999999999999, "output": 0.3, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2.5", "name": "MoonshotAI: Kimi K2.5", "input": 0.44999999999999996, "output": 2.25, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "upstage", "model": "upstage/solar-pro-3", "name": "Upstage: Solar Pro 3", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "minimax", "model": "minimax/minimax-m2-her", "name": "MiniMax: MiniMax M2-her", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "writer", "model": "writer/palmyra-x5", "name": "Writer: Palmyra X5", "input": 0.6, "output": 6, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-audio", "name": "OpenAI: GPT Audio", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-audio-mini", "name": "OpenAI: GPT Audio Mini", "input": 0.6, "output": 2.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "z-ai", "model": "z-ai/glm-4.7-flash", "name": "Z.ai: GLM 4.7 Flash", "input": 0.060500000000000005, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5.2-codex", "name": "OpenAI: GPT-5.2-Codex", "input": 1.75, "output": 14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-1.6-flash", "name": "ByteDance Seed: Seed 1.6 Flash", "input": 0.075, "output": 0.3, "unit": "per_1m_tokens", "region": "other" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-1.6", "name": "ByteDance Seed: Seed 1.6", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "other" }, { "provider": "minimax", "model": "minimax/minimax-m2.1", "name": "MiniMax: MiniMax M2.1", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-4.7", "name": "Z.ai: GLM 4.7", "input": 0.6, "output": 2.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "google", "model": "google/gemini-3-flash-preview", "name": "Google: Gemini 3 Flash Preview", "input": 0.5, "output": 3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3-flash-preview:batch", "name": "Google: Gemini 3 Flash Preview (batch)", "input": 0.25, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-nano-30b-a3b", "name": "NVIDIA: Nemotron 3 Nano 30B A3B", "input": 0.049999999999999996, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.2-chat", "name": "OpenAI: GPT-5.2 Chat", "input": 1.75, "output": 14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.2-pro", "name": "OpenAI: GPT-5.2 Pro", "input": 21, "output": 168, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.2-pro:batch", "name": "OpenAI: GPT-5.2 Pro (batch)", "input": 10.5, "output": 84, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.2", "name": "OpenAI: GPT-5.2", "input": 1.75, "output": 14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.2:batch", "name": "OpenAI: GPT-5.2 (batch)", "input": 0.875, "output": 7, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/devstral-2512", "name": "Mistral: Devstral 2 2512", "input": 0.39999999999999997, "output": 2, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "relace", "model": "relace/relace-search", "name": "Relace: Relace Search", "input": 1, "output": 3, "unit": "per_1m_tokens", "region": "other" }, { "provider": "z-ai", "model": "z-ai/glm-4.6v", "name": "Z.ai: GLM 4.6V", "input": 0.3, "output": 0.8999999999999999, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openrouter", "model": "openrouter/bodybuilder", "name": "Body Builder (beta)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-5.1-codex-max", "name": "OpenAI: GPT-5.1-Codex-Max", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "amazon", "model": "amazon/nova-2-lite-v1", "name": "Amazon: Nova 2 Lite", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/ministral-14b-2512", "name": "Mistral: Ministral 3 14B 2512", "input": 0.19999999999999998, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/ministral-8b-2512", "name": "Mistral: Ministral 3 8B 2512", "input": 0.15, "output": 0.15, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/ministral-8b-2512:batch", "name": "Mistral: Ministral 3 8B 2512 (batch)", "input": 0.075, "output": 0.075, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/ministral-3b-2512", "name": "Mistral: Ministral 3 3B 2512", "input": 0.09999999999999999, "output": 0.09999999999999999, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/mistral-large-2512", "name": "Mistral: Mistral Large 3 2512", "input": 0.5, "output": 1.5, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/mistral-large-2512:batch", "name": "Mistral: Mistral Large 3 2512 (batch)", "input": 0.25, "output": 0.75, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "deepseek", "model": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", "input": 0.28, "output": 0.42, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.5", "name": "Anthropic: Claude Opus 4.5", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.5:batch", "name": "Anthropic: Claude Opus 4.5 (batch)", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-3-pro-image-preview", "name": "Google: Nano Banana Pro (Gemini 3 Pro Image Preview)", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.1", "name": "OpenAI: GPT-5.1", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.1:batch", "name": "OpenAI: GPT-5.1 (batch)", "input": 0.625, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.1-codex", "name": "OpenAI: GPT-5.1-Codex", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5.1-codex-mini", "name": "OpenAI: GPT-5.1-Codex-Mini", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2-thinking", "name": "MoonshotAI: Kimi K2 Thinking", "input": 0.6, "output": 2.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "amazon", "model": "amazon/nova-premier-v1", "name": "Amazon: Nova Premier 1.0", "input": 2.5, "output": 12.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "perplexity", "model": "perplexity/sonar-pro-search", "name": "Perplexity: Sonar Pro Search", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/voxtral-small-24b-2507", "name": "Mistral: Voxtral Small 24B 2507", "input": 0.09999999999999999, "output": 0.3, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "openai", "model": "openai/gpt-oss-safeguard-20b", "name": "OpenAI: gpt-oss-safeguard-20b", "input": 0.075, "output": 0.3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "minimax", "model": "minimax/minimax-m2", "name": "MiniMax: MiniMax M2", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-vl-32b-instruct", "name": "Qwen: Qwen3 VL 32B Instruct", "input": 0.10400000000000001, "output": 0.41600000000000004, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "ibm-granite", "model": "ibm-granite/granite-4.0-h-micro", "name": "IBM: Granite 4.0 Micro", "input": 0.017, "output": 0.112, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-5-image-mini", "name": "OpenAI: GPT-5 Image Mini", "input": 2.5, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-haiku-4.5", "name": "Anthropic: Claude Haiku 4.5", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-haiku-4.5:batch", "name": "Anthropic: Claude Haiku 4.5 (batch)", "input": 0.5, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3-vl-8b-thinking", "name": "Qwen: Qwen3 VL 8B Thinking", "input": 0.18, "output": 2.0999999999999996, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-vl-8b-instruct", "name": "Qwen: Qwen3 VL 8B Instruct", "input": 0.117, "output": 0.45499999999999996, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5-image", "name": "OpenAI: GPT-5 Image", "input": 10, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-flash-image", "name": "Google: Nano Banana (Gemini 2.5 Flash Image)", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3-vl-30b-a3b-thinking", "name": "Qwen: Qwen3 VL 30B A3B Thinking", "input": 0.19999999999999998, "output": 2.4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-vl-30b-a3b-instruct", "name": "Qwen: Qwen3 VL 30B A3B Instruct", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5-pro", "name": "OpenAI: GPT-5 Pro", "input": 15, "output": 120, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5-pro:batch", "name": "OpenAI: GPT-5 Pro (batch)", "input": 7.5, "output": 60, "unit": "per_1m_tokens", "region": "us" }, { "provider": "z-ai", "model": "z-ai/glm-4.6", "name": "Z.ai: GLM 4.6", "input": 0.43, "output": 1.75, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.5", "name": "Anthropic: Claude Sonnet 4.5", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.5:batch", "name": "Anthropic: Claude Sonnet 4.5 (batch)", "input": 1.5, "output": 7.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-v3.2-exp", "name": "DeepSeek: DeepSeek V3.2 Exp", "input": 0.27, "output": 0.41, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "thedrummer", "model": "thedrummer/cydonia-24b-v4.1", "name": "TheDrummer: Cydonia 24B V4.1", "input": 0.3, "output": 0.5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "relace", "model": "relace/relace-apply-3", "name": "Relace: Relace Apply 3", "input": 0.85, "output": 1.25, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen3-vl-235b-a22b-thinking", "name": "Qwen: Qwen3 VL 235B A22B Thinking", "input": 0.39999999999999997, "output": 4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-vl-235b-a22b-instruct", "name": "Qwen: Qwen3 VL 235B A22B Instruct", "input": 0.21, "output": 1.9, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-max", "name": "Qwen: Qwen3 Max", "input": 0.78, "output": 3.9, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-coder-plus", "name": "Qwen: Qwen3 Coder Plus", "input": 0.65, "output": 3.25, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "deepseek", "model": "deepseek/deepseek-v3.1-terminus", "name": "DeepSeek: DeepSeek V3.1 Terminus", "input": 0.3, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-coder-flash", "name": "Qwen: Qwen3 Coder Flash", "input": 0.195, "output": 0.975, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-next-80b-a3b-thinking", "name": "Qwen: Qwen3 Next 80B A3B Thinking", "input": 0.15, "output": 1.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", "input": 0.09999999999999999, "output": 1.1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen-plus-2025-07-28", "name": "Qwen: Qwen Plus 0728", "input": 0.26, "output": 0.78, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2-0905", "name": "MoonshotAI: Kimi K2 0905", "input": 0.6, "output": 2.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-30b-a3b-thinking-2507", "name": "Qwen: Qwen3 30B A3B Thinking 2507", "input": 0.19999999999999998, "output": 2.4, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "nousresearch", "model": "nousresearch/hermes-4-405b", "name": "Nous: Hermes 4 405B", "input": 1, "output": 3, "unit": "per_1m_tokens", "region": "other" }, { "provider": "deepseek", "model": "deepseek/deepseek-chat-v3.1", "name": "DeepSeek: DeepSeek V3.1", "input": 0.25, "output": 0.95, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3.1", "name": "Mistral: Mistral Medium 3.1", "input": 0.39999999999999997, "output": 2, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3.1:batch", "name": "Mistral: Mistral Medium 3.1 (batch)", "input": 0.19999999999999998, "output": 1, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "z-ai", "model": "z-ai/glm-4.5v", "name": "Z.ai: GLM 4.5V", "input": 0.6, "output": 1.7999999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/gpt-5", "name": "OpenAI: GPT-5", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5:batch", "name": "OpenAI: GPT-5 (batch)", "input": 0.625, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5-mini", "name": "OpenAI: GPT-5 Mini", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5-mini:batch", "name": "OpenAI: GPT-5 Mini (batch)", "input": 0.125, "output": 1, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5-nano", "name": "OpenAI: GPT-5 Nano", "input": 0.049999999999999996, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-5-nano:batch", "name": "OpenAI: GPT-5 Nano (batch)", "input": 0.024999999999999998, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", "input": 0.037, "output": 0.16999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-oss-120b:batch", "name": "OpenAI: gpt-oss-120b (batch)", "input": 0.0296, "output": 0.136, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-oss-20b", "name": "OpenAI: gpt-oss-20b", "input": 0.018, "output": 0.09, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-oss-20b:batch", "name": "OpenAI: gpt-oss-20b (batch)", "input": 0.024, "output": 0.112, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.1", "name": "Anthropic: Claude Opus 4.1", "input": 15, "output": 75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.1:batch", "name": "Anthropic: Claude Opus 4.1 (batch)", "input": 7.5, "output": 37.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/codestral-2508", "name": "Mistral: Codestral 2508", "input": 0.3, "output": 0.8999999999999999, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "mistralai", "model": "mistralai/codestral-2508:batch", "name": "Mistral: Codestral 2508 (batch)", "input": 0.15, "output": 0.44999999999999996, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "qwen", "model": "qwen/qwen3-coder-30b-a3b-instruct", "name": "Qwen: Qwen3 Coder 30B A3B Instruct", "input": 0.07, "output": 0.28, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-30b-a3b-instruct-2507", "name": "Qwen: Qwen3 30B A3B Instruct 2507", "input": 0.04815, "output": 0.19305, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-4.5", "name": "Z.ai: GLM 4.5", "input": 0.6, "output": 2.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "z-ai", "model": "z-ai/glm-4.5-air", "name": "Z.ai: GLM 4.5 Air", "input": 0.13, "output": 0.85, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-235b-a22b-thinking-2507", "name": "Qwen: Qwen3 235B A22B Thinking 2507", "input": 0.22999999999999998, "output": 2.3, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-coder", "name": "Qwen: Qwen3 Coder 480B A35B", "input": 0.3, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "bytedance", "model": "bytedance/ui-tars-1.5-7b", "name": "ByteDance: UI-TARS 7B ", "input": 0.09999999999999999, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemini-2.5-flash-lite", "name": "Google: Gemini 2.5 Flash Lite", "input": 0.09999999999999999, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-flash-lite:batch", "name": "Google: Gemini 2.5 Flash Lite (batch)", "input": 0.049999999999999996, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3-235b-a22b-2507", "name": "Qwen: Qwen3 235B A22B Instruct 2507", "input": 0.0875, "output": 0.35, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2", "name": "MoonshotAI: Kimi K2 0711", "input": 0.5700000000000001, "output": 2.3, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "cognitivecomputations", "model": "cognitivecomputations/dolphin-mistral-24b-venice-edition", "name": "Venice: Uncensored", "input": 0.19999999999999998, "output": 0.8999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "tencent", "model": "tencent/hunyuan-a13b-instruct", "name": "Tencent: Hunyuan A13B Instruct", "input": 0.14, "output": 0.5700000000000001, "unit": "per_1m_tokens", "region": "other" }, { "provider": "morph", "model": "morph/morph-v3-large", "name": "Morph: Morph V3 Large", "input": 0.8999999999999999, "output": 1.9, "unit": "per_1m_tokens", "region": "other" }, { "provider": "morph", "model": "morph/morph-v3-fast", "name": "Morph: Morph V3 Fast", "input": 0.7999999999999999, "output": 1.2, "unit": "per_1m_tokens", "region": "other" }, { "provider": "baidu", "model": "baidu/ernie-4.5-vl-424b-a47b", "name": "Baidu: ERNIE 4.5 VL 424B A47B ", "input": 0.42, "output": 1.25, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "mistralai", "model": "mistralai/mistral-small-3.2-24b-instruct", "name": "Mistral: Mistral Small 3.2 24B", "input": 0.09375, "output": 0.25, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "minimax", "model": "minimax/minimax-m1", "name": "MiniMax: MiniMax M1", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "google", "model": "google/gemini-2.5-flash", "name": "Google: Gemini 2.5 Flash", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-flash:batch", "name": "Google: Gemini 2.5 Flash (batch)", "input": 0.15, "output": 1.25, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-pro", "name": "Google: Gemini 2.5 Pro", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-pro:batch", "name": "Google: Gemini 2.5 Pro (batch)", "input": 0.625, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o3-pro", "name": "OpenAI: o3 Pro", "input": 20, "output": 80, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemini-2.5-pro-preview", "name": "Google: Gemini 2.5 Pro Preview 06-05", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", "input": 0.5, "output": 2.1500000000000004, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4", "name": "Anthropic: Claude Sonnet 4", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3", "name": "Mistral: Mistral Medium 3", "input": 0.39999999999999997, "output": 2, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "meta-llama", "model": "meta-llama/llama-guard-4-12b", "name": "Meta: Llama Guard 4 12B", "input": 0.18, "output": 0.18, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen3-30b-a3b", "name": "Qwen: Qwen3 30B A3B", "input": 0.12, "output": 0.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-8b", "name": "Qwen: Qwen3 8B", "input": 0.117, "output": 0.45499999999999996, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-14b", "name": "Qwen: Qwen3 14B", "input": 0.12, "output": 0.24, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", "input": 0.08, "output": 0.28, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen3-235b-a22b", "name": "Qwen: Qwen3 235B A22B", "input": 0.45499999999999996, "output": 1.8199999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/o4-mini-high", "name": "OpenAI: o4 Mini High", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o3", "name": "OpenAI: o3", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o3:batch", "name": "OpenAI: o3 (batch)", "input": 1, "output": 4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o4-mini", "name": "OpenAI: o4 Mini", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o4-mini:batch", "name": "OpenAI: o4 Mini (batch)", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1", "name": "OpenAI: GPT-4.1", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1:batch", "name": "OpenAI: GPT-4.1 (batch)", "input": 1, "output": 4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1-mini", "name": "OpenAI: GPT-4.1 Mini", "input": 0.39999999999999997, "output": 1.5999999999999999, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1-mini:batch", "name": "OpenAI: GPT-4.1 Mini (batch)", "input": 0.19999999999999998, "output": 0.7999999999999999, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1-nano", "name": "OpenAI: GPT-4.1 Nano", "input": 0.09999999999999999, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4.1-nano:batch", "name": "OpenAI: GPT-4.1 Nano (batch)", "input": 0.049999999999999996, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-4-maverick", "name": "Meta: Llama 4 Maverick", "input": 0.1875, "output": 0.6525, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-4-scout", "name": "Meta: Llama 4 Scout", "input": 0.09999999999999999, "output": 0.3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek: DeepSeek V3 0324", "input": 0.29, "output": 1.1400000000000001, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/o1-pro", "name": "OpenAI: o1-pro", "input": 150, "output": 600, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-small-3.1-24b-instruct", "name": "Mistral: Mistral Small 3.1 24B", "input": 0.351, "output": 0.5549999999999999, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "google", "model": "google/gemma-3-4b-it", "name": "Google: Gemma 3 4B", "input": 0.049999999999999996, "output": 0.09999999999999999, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemma-3-12b-it", "name": "Google: Gemma 3 12B", "input": 0.049999999999999996, "output": 0.15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "cohere", "model": "cohere/command-a", "name": "Cohere: Command A", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "rekaai", "model": "rekaai/reka-flash-3", "name": "Reka Flash 3", "input": 0.09999999999999999, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "other" }, { "provider": "google", "model": "google/gemma-3-27b-it", "name": "Google: Gemma 3 27B", "input": 0.08, "output": 0.44999999999999996, "unit": "per_1m_tokens", "region": "us" }, { "provider": "thedrummer", "model": "thedrummer/skyfall-36b-v2", "name": "TheDrummer: Skyfall 36B V2", "input": 0.55, "output": 0.7999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "perplexity", "model": "perplexity/sonar-reasoning-pro", "name": "Perplexity: Sonar Reasoning Pro", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us" }, { "provider": "perplexity", "model": "perplexity/sonar-pro", "name": "Perplexity: Sonar Pro", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "perplexity", "model": "perplexity/sonar-deep-research", "name": "Perplexity: Sonar Deep Research", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-saba", "name": "Mistral: Saba", "input": 0.19999999999999998, "output": 0.6, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "openai", "model": "openai/o3-mini-high", "name": "OpenAI: o3 Mini High", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "aion-labs", "model": "aion-labs/aion-rp-llama-3.1-8b", "name": "AionLabs: Aion-RP 1.0 (8B)", "input": 0.7999999999999999, "output": 1.5999999999999999, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen2.5-vl-72b-instruct", "name": "Qwen: Qwen2.5 VL 72B Instruct", "input": 0.7999999999999999, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "qwen", "model": "qwen/qwen-plus", "name": "Qwen: Qwen-Plus", "input": 0.26, "output": 0.78, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "openai", "model": "openai/o3-mini", "name": "OpenAI: o3 Mini", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/o3-mini:batch", "name": "OpenAI: o3 Mini (batch)", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-small-24b-instruct-2501", "name": "Mistral: Mistral Small 3", "input": 0.049999999999999996, "output": 0.08, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "perplexity", "model": "perplexity/sonar", "name": "Perplexity: Sonar", "input": 1, "output": 1, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-r1", "name": "DeepSeek: R1", "input": 0.7, "output": 2.5, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "minimax", "model": "minimax/minimax-01", "name": "MiniMax: MiniMax-01", "input": 0.19999999999999998, "output": 1.1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "microsoft", "model": "microsoft/phi-4", "name": "Microsoft: Phi 4", "input": 0.07, "output": 0.14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "deepseek", "model": "deepseek/deepseek-chat", "name": "DeepSeek: DeepSeek V3", "input": 0.2574, "output": 1.0287, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "sao10k", "model": "sao10k/l3.3-euryale-70b", "name": "Sao10K: Llama 3.3 Euryale 70B", "input": 0.65, "output": 0.75, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/o1", "name": "OpenAI: o1", "input": 15, "output": 60, "unit": "per_1m_tokens", "region": "us" }, { "provider": "cohere", "model": "cohere/command-r7b-12-2024", "name": "Cohere: Command R7B (12-2024)", "input": 0.0375, "output": 0.15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", "input": 0.09999999999999999, "output": 0.32, "unit": "per_1m_tokens", "region": "us" }, { "provider": "amazon", "model": "amazon/nova-lite-v1", "name": "Amazon: Nova Lite 1.0", "input": 0.06, "output": 0.24, "unit": "per_1m_tokens", "region": "us" }, { "provider": "amazon", "model": "amazon/nova-micro-v1", "name": "Amazon: Nova Micro 1.0", "input": 0.035, "output": 0.14, "unit": "per_1m_tokens", "region": "us" }, { "provider": "amazon", "model": "amazon/nova-pro-v1", "name": "Amazon: Nova Pro 1.0", "input": 0.7999999999999999, "output": 3.1999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o-2024-11-20", "name": "OpenAI: GPT-4o (2024-11-20)", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-large-2407", "name": "Mistral Large 2407", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "qwen", "model": "qwen/qwen-2.5-coder-32b-instruct", "name": "Qwen2.5 Coder 32B Instruct", "input": 0.66, "output": 1, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "thedrummer", "model": "thedrummer/unslopnemo-12b", "name": "TheDrummer: UnslopNemo 12B", "input": 0.39999999999999997, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "other" }, { "provider": "anthracite-org", "model": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", "input": 2.5, "output": 5, "unit": "per_1m_tokens", "region": "other" }, { "provider": "qwen", "model": "qwen/qwen-2.5-7b-instruct", "name": "Qwen: Qwen2.5 7B Instruct", "input": 0.09999999999999999, "output": 0.19999999999999998, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.2-1b-instruct", "name": "Meta: Llama 3.2 1B Instruct", "input": 0.027, "output": 0.201, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.2-3b-instruct", "name": "Meta: Llama 3.2 3B Instruct", "input": 0.049999999999999996, "output": 0.33, "unit": "per_1m_tokens", "region": "us" }, { "provider": "qwen", "model": "qwen/qwen-2.5-72b-instruct", "name": "Qwen2.5 72B Instruct", "input": 0.36, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "cn" }, { "provider": "cohere", "model": "cohere/command-r-08-2024", "name": "Cohere: Command R (08-2024)", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "cohere", "model": "cohere/command-r-plus-08-2024", "name": "Cohere: Command R+ (08-2024)", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "sao10k", "model": "sao10k/l3.1-euryale-70b", "name": "Sao10K: Llama 3.1 Euryale 70B v2.2", "input": 0.85, "output": 0.85, "unit": "per_1m_tokens", "region": "other" }, { "provider": "nousresearch", "model": "nousresearch/hermes-3-llama-3.1-70b", "name": "Nous: Hermes 3 70B Instruct", "input": 0.7, "output": 0.7, "unit": "per_1m_tokens", "region": "other" }, { "provider": "nousresearch", "model": "nousresearch/hermes-3-llama-3.1-405b", "name": "Nous: Hermes 3 405B Instruct", "input": 1, "output": 1, "unit": "per_1m_tokens", "region": "other" }, { "provider": "sao10k", "model": "sao10k/l3-lunaris-8b", "name": "Sao10K: Llama 3 8B Lunaris", "input": 0.04, "output": 0.049999999999999996, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-4o-2024-08-06", "name": "OpenAI: GPT-4o (2024-08-06)", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", "input": 0.39999999999999997, "output": 0.39999999999999997, "unit": "per_1m_tokens", "region": "us" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.1-8b-instruct", "name": "Meta: Llama 3.1 8B Instruct", "input": 0.049999999999999996, "output": 0.08, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-nemo", "name": "Mistral: Mistral Nemo", "input": 0.019000000000000003, "output": 0.03, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "openai", "model": "openai/gpt-4o-mini", "name": "OpenAI: GPT-4o-mini", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o-mini-2024-07-18", "name": "OpenAI: GPT-4o-mini (2024-07-18)", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o-mini:batch", "name": "OpenAI: GPT-4o-mini (batch)", "input": 0.075, "output": 0.3, "unit": "per_1m_tokens", "region": "us" }, { "provider": "google", "model": "google/gemma-2-27b-it", "name": "Google: Gemma 2 27B", "input": 0.65, "output": 0.65, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o", "name": "OpenAI: GPT-4o", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o-2024-05-13", "name": "OpenAI: GPT-4o (2024-05-13)", "input": 5, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4o:batch", "name": "OpenAI: GPT-4o (batch)", "input": 1.25, "output": 5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mixtral-8x22b-instruct", "name": "Mistral: Mixtral 8x22B Instruct", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "microsoft", "model": "microsoft/wizardlm-2-8x22b", "name": "WizardLM-2 8x22B", "input": 0.62, "output": 0.62, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4-turbo", "name": "OpenAI: GPT-4 Turbo", "input": 10, "output": 30, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4-turbo:batch", "name": "OpenAI: GPT-4 Turbo (batch)", "input": 5, "output": 15, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mistralai", "model": "mistralai/mistral-large", "name": "Mistral Large", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu" }, { "provider": "openai", "model": "openai/gpt-3.5-turbo-0613", "name": "OpenAI: GPT-3.5 Turbo (older v0613)", "input": 1, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openrouter", "model": "openrouter/auto", "name": "Auto Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-3.5-turbo-instruct", "name": "OpenAI: GPT-3.5 Turbo Instruct", "input": 1.5, "output": 2, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-3.5-turbo-16k", "name": "OpenAI: GPT-3.5 Turbo 16k", "input": 3, "output": 4, "unit": "per_1m_tokens", "region": "us" }, { "provider": "mancer", "model": "mancer/weaver", "name": "Mancer: Weaver (alpha)", "input": 0.39999999999999997, "output": 0.75, "unit": "per_1m_tokens", "region": "other" }, { "provider": "undi95", "model": "undi95/remm-slerp-l2-13b", "name": "ReMM SLERP 13B", "input": 0.35, "output": 0.65, "unit": "per_1m_tokens", "region": "other" }, { "provider": "gryphe", "model": "gryphe/mythomax-l2-13b", "name": "MythoMax 13B", "input": 0.08, "output": 0.11, "unit": "per_1m_tokens", "region": "other" }, { "provider": "openai", "model": "openai/gpt-3.5-turbo", "name": "OpenAI: GPT-3.5 Turbo", "input": 0.5, "output": 1.5, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-3.5-turbo:batch", "name": "OpenAI: GPT-3.5 Turbo (batch)", "input": 0.25, "output": 0.75, "unit": "per_1m_tokens", "region": "us" }, { "provider": "openai", "model": "openai/gpt-4", "name": "OpenAI: GPT-4", "input": 30, "output": 60, "unit": "per_1m_tokens", "region": "us" }];
|
|
252
|
-
|
|
253
|
-
// src/catalogue/pricing-api.ts
|
|
254
|
-
var basename = (id) => {
|
|
255
|
-
let s = id.toLowerCase();
|
|
256
|
-
const colon = s.lastIndexOf(":");
|
|
257
|
-
if (colon >= 0) s = s.slice(colon + 1);
|
|
258
|
-
const slash = s.lastIndexOf("/");
|
|
259
|
-
if (slash >= 0) s = s.slice(slash + 1);
|
|
260
|
-
return s;
|
|
261
|
-
};
|
|
262
|
-
function regionForProvider(provider) {
|
|
263
|
-
switch (provider) {
|
|
264
|
-
case "mistral":
|
|
265
|
-
case "mistralai":
|
|
266
|
-
return "eu";
|
|
267
|
-
case "deepseek":
|
|
268
|
-
return "cn";
|
|
269
|
-
case "anthropic":
|
|
270
|
-
case "openai":
|
|
271
|
-
case "google":
|
|
272
|
-
case "x-ai":
|
|
273
|
-
case "meta-llama":
|
|
274
|
-
return "us";
|
|
275
|
-
default:
|
|
276
|
-
return "other";
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
var _media = null;
|
|
280
|
-
function ensureMedia() {
|
|
281
|
-
if (_media) return _media;
|
|
282
|
-
const m = /* @__PURE__ */ new Map();
|
|
283
|
-
for (const [key, p] of Object.entries(MEDIA_PRICING)) {
|
|
284
|
-
const ci = key.indexOf(":");
|
|
285
|
-
const provider = ci >= 0 ? key.slice(0, ci) : "";
|
|
286
|
-
const model = ci >= 0 ? key.slice(ci + 1) : key;
|
|
287
|
-
const row = {
|
|
288
|
-
provider,
|
|
289
|
-
model,
|
|
290
|
-
unit: p.unit,
|
|
291
|
-
usd: p.usd,
|
|
292
|
-
checkedAt: p.checkedAt,
|
|
293
|
-
region: regionForProvider(provider),
|
|
294
|
-
source: "curated"
|
|
295
|
-
};
|
|
296
|
-
if (row.unit === "per_sec") row.perSec = row.usd;
|
|
297
|
-
if (row.unit === "per_image") row.perImage = row.usd;
|
|
298
|
-
if (!m.has(model.toLowerCase())) m.set(model.toLowerCase(), row);
|
|
299
|
-
m.set(key.toLowerCase(), row);
|
|
300
|
-
}
|
|
301
|
-
_media = m;
|
|
302
|
-
return m;
|
|
303
|
-
}
|
|
304
|
-
function listMediaPrices() {
|
|
305
|
-
return [...new Set(ensureMedia().values())];
|
|
306
|
-
}
|
|
307
|
-
var _list = null;
|
|
308
|
-
var _full = null;
|
|
309
|
-
var _base = null;
|
|
310
|
-
function ensure() {
|
|
311
|
-
warnIfPricingStale();
|
|
312
|
-
if (_list) return;
|
|
313
|
-
const list = [];
|
|
314
|
-
const byBase = /* @__PURE__ */ new Map();
|
|
315
|
-
for (const r of PRICING_DATA) {
|
|
316
|
-
const e = {
|
|
317
|
-
provider: r.provider,
|
|
318
|
-
model: r.model,
|
|
319
|
-
name: r.name,
|
|
320
|
-
inputPer1M: r.input,
|
|
321
|
-
outputPer1M: r.output,
|
|
322
|
-
unit: "per_1m_tokens",
|
|
323
|
-
region: ["eu", "us", "cn", "other"].includes(r.region) ? r.region : "other",
|
|
324
|
-
source: "inventory"
|
|
325
|
-
};
|
|
326
|
-
list.push(e);
|
|
327
|
-
byBase.set(basename(r.model), e);
|
|
328
|
-
}
|
|
329
|
-
for (const [key, p] of Object.entries(PRICING)) {
|
|
330
|
-
const ci = key.indexOf(":");
|
|
331
|
-
const provider = ci >= 0 ? key.slice(0, ci) : "";
|
|
332
|
-
const modelPart = ci >= 0 ? key.slice(ci + 1) : key;
|
|
333
|
-
const existing = byBase.get(basename(modelPart));
|
|
334
|
-
if (existing) {
|
|
335
|
-
existing.inputPer1M = p.inputPer1M;
|
|
336
|
-
existing.outputPer1M = p.outputPer1M;
|
|
337
|
-
existing.unit = "per_1m_tokens";
|
|
338
|
-
existing.source = "curated";
|
|
339
|
-
} else {
|
|
340
|
-
const e = {
|
|
341
|
-
provider,
|
|
342
|
-
model: modelPart,
|
|
343
|
-
inputPer1M: p.inputPer1M,
|
|
344
|
-
outputPer1M: p.outputPer1M,
|
|
345
|
-
unit: "per_1m_tokens",
|
|
346
|
-
region: regionForProvider(provider),
|
|
347
|
-
source: "curated"
|
|
348
|
-
};
|
|
349
|
-
list.push(e);
|
|
350
|
-
byBase.set(basename(modelPart), e);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
_list = list;
|
|
354
|
-
_base = byBase;
|
|
355
|
-
_full = new Map(list.map((e) => [e.model.toLowerCase(), e]));
|
|
356
|
-
for (const [key, mp] of Object.entries(MEDIA_PRICING)) {
|
|
357
|
-
const model = key.slice(key.indexOf(":") + 1).toLowerCase();
|
|
358
|
-
const tok = _full.get(model) ?? byBase.get(basename(model));
|
|
359
|
-
if (tok) tok.alsoBilled = { unit: mp.unit, usd: mp.usd, checkedAt: mp.checkedAt };
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
function getModelPrice(modelId) {
|
|
363
|
-
ensure();
|
|
364
|
-
const s = modelId.trim().toLowerCase();
|
|
365
|
-
const dated = stripDatedSuffix(s);
|
|
366
|
-
const media = ensureMedia();
|
|
367
|
-
return _full.get(s) ?? (s.includes(":") ? _full.get(s.slice(s.indexOf(":") + 1)) : void 0) ?? _base.get(basename(s)) ?? (dated !== s ? _full.get(dated) ?? _base.get(basename(dated)) : void 0) ?? // Media LAST, so a token model never loses its own row to a media id collision.
|
|
368
|
-
// Before F050 this returned undefined for every video model, which a caller could
|
|
369
|
-
// not tell apart from "we have no price for that anywhere".
|
|
370
|
-
media.get(s) ?? (s.includes(":") ? media.get(s.slice(s.indexOf(":") + 1)) : void 0);
|
|
371
|
-
}
|
|
372
|
-
function listModelPrices() {
|
|
373
|
-
ensure();
|
|
374
|
-
return _list.slice();
|
|
375
|
-
}
|
|
376
|
-
function findModelPrices(filter = {}) {
|
|
377
|
-
return listModelPrices().filter((m) => {
|
|
378
|
-
if (filter.provider && m.provider !== filter.provider) return false;
|
|
379
|
-
if (filter.region && m.region !== filter.region) return false;
|
|
380
|
-
if (filter.maxInputPer1M != null && m.inputPer1M > filter.maxInputPer1M) return false;
|
|
381
|
-
if (filter.free === true && (m.inputPer1M !== 0 || m.outputPer1M !== 0)) return false;
|
|
382
|
-
if (filter.free === false && m.inputPer1M === 0 && m.outputPer1M === 0) return false;
|
|
383
|
-
return true;
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
function priceCall(modelId, inputTokens, outputTokens) {
|
|
387
|
-
const p = getModelPrice(modelId);
|
|
388
|
-
if (!p || p.unit !== "per_1m_tokens") return void 0;
|
|
389
|
-
return inputTokens / 1e6 * p.inputPer1M + outputTokens / 1e6 * p.outputPer1M;
|
|
390
|
-
}
|
|
391
|
-
function pricingGeneratedAt() {
|
|
392
|
-
return PRICING_GENERATED_AT;
|
|
393
|
-
}
|
|
394
|
-
var PRICING_STALE_AFTER_DAYS = 35;
|
|
395
|
-
function computeFreshness(generatedAt, checkedAt, nowMs, units = []) {
|
|
396
|
-
const age = (iso) => {
|
|
397
|
-
const t = iso ? Date.parse(iso) : NaN;
|
|
398
|
-
return Number.isFinite(t) ? Math.max(0, Math.floor((nowMs - t) / 864e5)) : null;
|
|
399
|
-
};
|
|
400
|
-
const isStale = (d) => d === null || d > PRICING_STALE_AFTER_DAYS;
|
|
401
|
-
const ageDays = age(checkedAt);
|
|
402
|
-
const unitRows = units.map((u) => {
|
|
403
|
-
const a = age(u.checkedAt);
|
|
404
|
-
return { unit: u.unit, count: u.count, checkedAt: u.checkedAt, ageDays: a, stale: isStale(a) };
|
|
405
|
-
});
|
|
406
|
-
const caveats = unitRows.flatMap(
|
|
407
|
-
(u) => u.count === 0 ? [`${u.unit}: 0 rows \u2014 this table cannot price anything billed in ${u.unit}, so "stale: false" says nothing about it`] : u.stale ? [
|
|
408
|
-
`${u.unit}: ${u.count} row(s) last verified ${u.checkedAt || "never"}` + (u.ageDays === null ? "" : ` (${u.ageDays} days ago)`) + `, past the ${PRICING_STALE_AFTER_DAYS}d threshold`
|
|
409
|
-
] : []
|
|
410
|
-
);
|
|
411
|
-
return {
|
|
412
|
-
generatedAt,
|
|
413
|
-
checkedAt,
|
|
414
|
-
ageDays,
|
|
415
|
-
stale: isStale(ageDays),
|
|
416
|
-
thresholdDays: PRICING_STALE_AFTER_DAYS,
|
|
417
|
-
units: unitRows,
|
|
418
|
-
caveats
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
function pricingFreshness(nowMs = Date.now()) {
|
|
422
|
-
return computeFreshness(PRICING_GENERATED_AT, PRICING_CHECKED_AT, nowMs, [
|
|
423
|
-
{ unit: "per_1m_tokens", count: PRICING_DATA.length, checkedAt: PRICING_CHECKED_AT },
|
|
424
|
-
// Every media unit, derived from the table rather than listed here — a unit added
|
|
425
|
-
// to MEDIA_PRICING and forgotten here would be a unit the freshness API silently
|
|
426
|
-
// does not report, which is this whole feature's own bug wearing a new hat.
|
|
427
|
-
// Hand-maintained, and the monthly job cannot reach them, hence their own date:
|
|
428
|
-
// inheriting the token snapshot's would make an un-revised video price look freshly
|
|
429
|
-
// verified every time the token job ran.
|
|
430
|
-
...Object.entries(mediaUnitCounts()).map(([unit, count]) => ({
|
|
431
|
-
unit,
|
|
432
|
-
count,
|
|
433
|
-
checkedAt: MEDIA_PRICING_CHECKED_AT
|
|
434
|
-
}))
|
|
435
|
-
]);
|
|
436
|
-
}
|
|
437
|
-
var warned = false;
|
|
438
|
-
function warnIfPricingStale(nowMs = Date.now()) {
|
|
439
|
-
if (warned) return;
|
|
440
|
-
if (globalThis.process?.env?.BROBERG_AI_SDK_SILENCE_PRICING_WARNING) return;
|
|
441
|
-
const f = pricingFreshness(nowMs);
|
|
442
|
-
if (!f.stale && f.caveats.length === 0) return;
|
|
443
|
-
warned = true;
|
|
444
|
-
const parts = [];
|
|
445
|
-
if (f.stale) {
|
|
446
|
-
const age = f.ageDays === null ? "of unknown age" : `${f.ageDays} days old`;
|
|
447
|
-
parts.push(
|
|
448
|
-
`price table is ${age} (last verified ${f.checkedAt || "never"}, threshold ${f.thresholdDays}d). Prices drift: one week has produced 34 changes before. Refresh with \`bun run scripts/build-inventory.ts\` in ai-sdk, or take a newer release.`
|
|
449
|
-
);
|
|
450
|
-
}
|
|
451
|
-
if (f.caveats.length > 0) {
|
|
452
|
-
parts.push(
|
|
453
|
-
`${f.caveats.length} pricing caveat(s): ${f.caveats.join("; ")}. Non-token prices are HAND-maintained (no vendor catalogue API serves them), so refreshing them means a human re-reading the vendor's pricing page and bumping MEDIA_PRICING_CHECKED_AT in src/cost/media-pricing.ts.`
|
|
454
|
-
);
|
|
455
|
-
}
|
|
456
|
-
console.warn(`[@broberg/ai-sdk] ${parts.join(" | ")}`);
|
|
457
|
-
}
|
|
458
|
-
function resetPricingWarningForTests() {
|
|
459
|
-
warned = false;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
export {
|
|
463
|
-
getPrice,
|
|
464
|
-
MEDIA_PRICING_CHECKED_AT,
|
|
465
|
-
DEFAULT_CLIP_SEC,
|
|
466
|
-
getMediaPrice,
|
|
467
|
-
listMediaPrices,
|
|
468
|
-
getModelPrice,
|
|
469
|
-
listModelPrices,
|
|
470
|
-
findModelPrices,
|
|
471
|
-
priceCall,
|
|
472
|
-
pricingGeneratedAt,
|
|
473
|
-
PRICING_STALE_AFTER_DAYS,
|
|
474
|
-
pricingFreshness,
|
|
475
|
-
warnIfPricingStale,
|
|
476
|
-
resetPricingWarningForTests
|
|
477
|
-
};
|
|
478
|
-
//# sourceMappingURL=chunk-O4LR6X4U.js.map
|