@broberg/ai-sdk 0.64.2 → 0.65.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-D53S242W.js +449 -0
- package/dist/chunk-D53S242W.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/pricing.d.ts +82 -1
- package/dist/pricing.js +5 -1
- package/package.json +1 -1
- package/dist/chunk-JMRWFOAC.js +0 -337
- package/dist/chunk-JMRWFOAC.js.map +0 -1
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PRICING,
|
|
3
|
+
stripDatedSuffix
|
|
4
|
+
} from "./chunk-BWBRED4O.js";
|
|
5
|
+
|
|
6
|
+
// src/cost/media-pricing.ts
|
|
7
|
+
var MEDIA_PRICING_CHECKED_AT = "2026-10-11";
|
|
8
|
+
var VEO_PER_SEC = {
|
|
9
|
+
"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)" },
|
|
10
|
+
"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)" },
|
|
11
|
+
"veo-3.1-lite-generate-preview": { usd: 0.05, source: "ai.google.dev/gemini-api/docs/pricing \u2014 720p (1080p = 0.08)" },
|
|
12
|
+
"veo-3.0-generate-001": { usd: 0.4, source: "ai.google.dev/gemini-api/docs/pricing" },
|
|
13
|
+
"veo-3.0-fast-generate-001": { usd: 0.1, source: "ai.google.dev/gemini-api/docs/pricing" }
|
|
14
|
+
};
|
|
15
|
+
var veoRows = (provider) => Object.fromEntries(
|
|
16
|
+
Object.entries(VEO_PER_SEC).map(([model, v]) => [
|
|
17
|
+
`${provider}:${model}`,
|
|
18
|
+
{ unit: "per_sec", usd: v.usd, checkedAt: MEDIA_PRICING_CHECKED_AT, source: v.source }
|
|
19
|
+
])
|
|
20
|
+
);
|
|
21
|
+
var MEDIA_PRICING = {
|
|
22
|
+
...veoRows("gemini"),
|
|
23
|
+
...veoRows("vertex"),
|
|
24
|
+
// fal video — fal's OFFICIAL published per-second rate, not a guess. Kling 2.5
|
|
25
|
+
// Turbo Pro i2v is the blessed FAL_KEY-only image→video route: $0.35 for the
|
|
26
|
+
// first 5 s + $0.07/additional s = a flat $0.07/s at 1080p.
|
|
27
|
+
"fal:fal-ai/kling-video/v2.5-turbo/pro/image-to-video": {
|
|
28
|
+
unit: "per_sec",
|
|
29
|
+
usd: 0.07,
|
|
30
|
+
checkedAt: MEDIA_PRICING_CHECKED_AT,
|
|
31
|
+
source: "fal.ai/models/fal-ai/kling-video/v2.5-turbo/pro/image-to-video"
|
|
32
|
+
},
|
|
33
|
+
// fal images — ESTIMATES. fal bills by megapixel and changes often; fal returns
|
|
34
|
+
// no price with the result, so a call costed from these carries
|
|
35
|
+
// `costBasis: "estimated"`. Override per call with config.pricePerImage.
|
|
36
|
+
"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" },
|
|
37
|
+
"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" },
|
|
38
|
+
"fal:fal-ai/flux-lora": { unit: "per_image", usd: 0.035, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "fal.ai/models/fal-ai/flux-lora \u2014 $0.035/MP (was 0.025 until 2026-10-11), billed by megapixel" },
|
|
39
|
+
"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" },
|
|
40
|
+
"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" },
|
|
41
|
+
// F079 — FLUX 3 Video on api.eu.bfl.ai. Fallback only: BFL reports the settled cost
|
|
42
|
+
// in get_result. MEASURED 20/10 2026: a 5 s hd i2v clip settled at 75 credits = $0.75.
|
|
43
|
+
// Higher resolutions (fhd/qhd/uhd) are not measured and cost more.
|
|
44
|
+
"bfl:flux-3-video": {
|
|
45
|
+
unit: "per_sec",
|
|
46
|
+
usd: 0.15,
|
|
47
|
+
checkedAt: MEDIA_PRICING_CHECKED_AT,
|
|
48
|
+
source: "measured 2026-10-20: get_result cost 75 credits for a 5 s hd clip (hd only)"
|
|
49
|
+
},
|
|
50
|
+
// BFL — the fallback only. BFL RETURNS the real billed cost in credits, so a
|
|
51
|
+
// normal call is `costBasis: "reported"` and never reads this row.
|
|
52
|
+
"bfl:flux-pro-1.1-ultra-finetuned": {
|
|
53
|
+
unit: "per_image",
|
|
54
|
+
usd: 0.06,
|
|
55
|
+
checkedAt: MEDIA_PRICING_CHECKED_AT,
|
|
56
|
+
source: "bfl.ai/pricing \u2014 estimate; used only when BFL omits the credit cost"
|
|
57
|
+
},
|
|
58
|
+
// Gemini images — billed per image, not per token. Google's price RISES with
|
|
59
|
+
// resolution; these are the common 1K/1024px default.
|
|
60
|
+
"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" },
|
|
61
|
+
"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" },
|
|
62
|
+
"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" },
|
|
63
|
+
"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" },
|
|
64
|
+
"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" },
|
|
65
|
+
// OpenRouter images — the FALLBACK only. OpenRouter usually returns usage.cost.
|
|
66
|
+
"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" },
|
|
67
|
+
"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" },
|
|
68
|
+
// F063: OpenRouter prices Recraft per image-token; both rows above are that rate
|
|
69
|
+
// x 4175 tokens/image exactly, so these use the same factor (measured 27/9 off
|
|
70
|
+
// /api/v1/models?output_modalities=image).
|
|
71
|
+
"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" },
|
|
72
|
+
"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" },
|
|
73
|
+
// Speech OUT — billed per 1000 characters of input text.
|
|
74
|
+
"azure:tts": { unit: "per_1k_chars", usd: 0.015, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "prices.azure.com retail API, westeurope \u2014 S1 Neural TTS $15/1M chars (HD voices $22/1M)" },
|
|
75
|
+
"elevenlabs:tts": { unit: "per_1k_chars", usd: 0.08, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "elevenlabs.io/pricing/api \u2014 v3 Text to Speech $0.08/1k chars (the adapter uses eleven_v3)" },
|
|
76
|
+
// Translation — per 1000 characters. Free tier (":fx" key, within quota) is truly $0;
|
|
77
|
+
// this rate only bites past the Pro allowance.
|
|
78
|
+
"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" },
|
|
79
|
+
// Speech IN — billed per audio-minute.
|
|
80
|
+
"azure:stt": { unit: "per_min", usd: 6e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "prices.azure.com retail API, westeurope \u2014 Fast Transcription $0.36/hour; the adapter calls transcriptions:transcribe (fast). $1/h was the real-time rate we do not use" },
|
|
81
|
+
"openai:whisper-1": { unit: "per_min", usd: 6e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "openai.com/api/pricing \u2014 Whisper" },
|
|
82
|
+
"mistral:voxtral-mini-latest": { unit: "per_min", usd: 3e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "docs.mistral.ai/models/voxtral-mini-transcribe-26-02 \u2014 alias of voxtral-mini-2602, $0.003/min" },
|
|
83
|
+
"mistral:voxtral-mini-2507": { unit: "per_min", usd: 2e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "mistral.ai/pricing \u2014 Voxtral; deprecated 2026-02-27, docs no longer show a price (NOT re-verifiable 2026-10-11)" },
|
|
84
|
+
"mistral:voxtral-mini-2602": { unit: "per_min", usd: 3e-3, checkedAt: MEDIA_PRICING_CHECKED_AT, source: "docs.mistral.ai/models/voxtral-mini-transcribe-26-02 \u2014 $0.003/min (was 0.002 until 2026-10-11)" },
|
|
85
|
+
// OCR — per page.
|
|
86
|
+
"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" },
|
|
87
|
+
// A flat fee per training run, not per anything produced.
|
|
88
|
+
"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" }
|
|
89
|
+
};
|
|
90
|
+
var DEFAULT_CLIP_SEC = 8;
|
|
91
|
+
function getMediaPrice(provider, model) {
|
|
92
|
+
return MEDIA_PRICING[`${provider}:${model}`];
|
|
93
|
+
}
|
|
94
|
+
function mediaUnitCounts() {
|
|
95
|
+
const counts = {
|
|
96
|
+
per_sec: 0,
|
|
97
|
+
per_image: 0,
|
|
98
|
+
per_1k_chars: 0,
|
|
99
|
+
per_min: 0,
|
|
100
|
+
per_page: 0,
|
|
101
|
+
per_training: 0
|
|
102
|
+
};
|
|
103
|
+
for (const p of Object.values(MEDIA_PRICING)) counts[p.unit]++;
|
|
104
|
+
return counts;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/catalogue/pricing-data.ts
|
|
108
|
+
var PRICING_GENERATED_AT = "2026-10-20T11:06:01.218Z";
|
|
109
|
+
var PRICING_CHECKED_AT = "2026-10-20T11:06:01.218Z";
|
|
110
|
+
var PRICING_DATA = [{ "provider": "minimax", "model": "minimax/minimax-m3.1-flash:free", "name": "MiniMax: MiniMax M3.1 Flash (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4.1-flash-1017", "name": "DeepSeek: DeepSeek V4.1 Flash 1017", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "elorian", "model": "elorian/glimpse", "name": "Elorian: Glimpse", "input": 0.6, "output": 3, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "xingchen-agi", "model": "xingchen-agi/xing4.0-29b-a4b:free", "name": "XingChen: Xing4.0 29B A4B (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "reflection", "model": "reflection/beam-1.0-501b-a23b", "name": "Reflection: Beam 1.0 501B A23B", "input": 0.3, "output": 1, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "inception", "model": "inception/mercury-3", "name": "Inception: Mercury 3", "input": 0.1, "output": 0.35, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "moondream", "model": "moondream/moondream3-preview", "name": "Moondream: Moondream 3 Preview", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "moondream", "model": "moondream/moondream3.1-9b-a2b", "name": "Moondream: Moondream 3.1", "input": 0.3, "output": 2.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "meta", "model": "meta/muse-spark-open", "name": "Meta: Muse Spark Open", "input": 1.25, "output": 4.25, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-super-vl", "name": "NVIDIA: Nemotron 3.5 Super VL", "input": 0.15, "output": 0.5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-super-vl:free", "name": "NVIDIA: Nemotron 3.5 Super VL (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "unbiased", "model": "unbiased/pareto-26.10", "name": "Pareto 26.10", "input": 0.8, "output": 3.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~unbiased", "model": "~unbiased/pareto-latest", "name": "Pareto Latest", "input": 0.8, "output": 3.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "unbiased", "model": "unbiased/pareto-26.9", "name": "Pareto 26.9", "input": 2.5, "output": 7.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "liquid", "model": "liquid/lfm-2.5-24b-a2b", "name": "LiquidAI: LFM2.5-24B-A2B", "input": 0.05, "output": 0.7, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "google", "model": "google/gemini-4-argon", "name": "Google: Gemini 4 Argon", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "google", "model": "google/gemini-4-argon:batch", "name": "Google: Gemini 4 Argon (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "scaledown", "model": "scaledown/summarize", "name": "ScaleDown: Summarize", "input": 0.04, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "scaledown", "model": "scaledown/extract", "name": "ScaleDown: Extract", "input": 0.04, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "meta", "model": "meta/muse-wonder", "name": "Meta: Muse Wonder", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "stepfun", "model": "stepfun/step-5-preview", "name": "StepFun: Step 5 Preview", "input": 1, "output": 2.7, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-haiku-5.5", "name": "Anthropic: Claude Haiku 5.5", "input": 0.1, "output": 0.5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-haiku-5.5:batch", "name": "Anthropic: Claude Haiku 5.5 (batch)", "input": 0.05, "output": 0.25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "google", "model": "google/gemini-nano-banana-2.1", "name": "Google: Nano Banana 2.1", "input": 1.5, "output": 7.5, "unit": "per_1m_tokens", "region": "us", "out": "image" }, { "provider": "mistralai", "model": "mistralai/mistral-large-4-0", "name": "Mistral: Mistral Large 4", "input": 0.68, "output": 2.09, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.1-flash", "name": "inclusionAI: Ling 3.1 Flash", "input": 0.075, "output": 0.225, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6.1-sol-pro:batch", "name": "OpenAI: GPT-6.1 Sol Pro (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6.1-sol", "name": "OpenAI: GPT-6.1 Sol", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6.1-sol:batch", "name": "OpenAI: GPT-6.1 Sol (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5.5", "name": "Anthropic: Claude Sonnet 5.5", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "typesafe", "model": "typesafe/jev-router", "name": "TypeSafe: Jev Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "perceptron", "model": "perceptron/perceptron-mk1.5", "name": "Perceptron: Perceptron Mk1.5", "input": 0.15, "output": 1.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "fireworks", "model": "fireworks/ember-1", "name": "Fireworks: Ember-1", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.8-max-prime", "name": "Qwen: Qwen3.8 Max Prime", "input": 4, "output": 12, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.5", "name": "AionLabs: Aion 3.5", "input": 3, "output": 6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "upstage", "model": "upstage/solar-mini4", "name": "Upstage: Solar Mini 4", "input": 0.05, "output": 0.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "cohere", "model": "cohere/command-a-plus", "name": "Cohere: Command A+", "input": 0.3, "output": 1.5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-luna-pro", "name": "OpenAI: GPT-6 Luna Pro", "input": 0.1, "output": 0.5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-luna-pro:batch", "name": "OpenAI: GPT-6 Luna Pro (batch)", "input": 0.05, "output": 0.25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-luna", "name": "OpenAI: GPT-6 Luna", "input": 0.1, "output": 0.5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-luna:batch", "name": "OpenAI: GPT-6 Luna (batch)", "input": 0.05, "output": 0.25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-sol-pro", "name": "OpenAI: GPT-6 Sol Pro", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-sol", "name": "OpenAI: GPT-6 Sol", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-sol:batch", "name": "OpenAI: GPT-6 Sol (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5.5", "name": "Anthropic: Claude Opus 5.5", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "nvidia", "model": "nvidia/switchyard", "name": "NVIDIA: Switchyard", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "x-ai", "model": "x-ai/grok-4.7", "name": "SpaceXAI: Grok 4.7", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-pro-latest", "name": "DeepSeek: DeepSeek Pro Latest", "input": 0.225, "output": 8, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-flash-latest", "name": "DeepSeek: DeepSeek Flash Latest", "input": 0.07, "output": 0.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "inference-net", "model": "inference-net/schematron-v2-small", "name": "Inference.net: Schematron V2 Small", "input": 0.05, "output": 0.23, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~openai", "model": "~openai/gpt-astra-latest", "name": "OpenAI: GPT Astra Latest", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~openai", "model": "~openai/gpt-sol-latest", "name": "OpenAI: GPT Sol Latest", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~openai", "model": "~openai/gpt-terra-latest", "name": "OpenAI: GPT Terra Latest", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~openai", "model": "~openai/gpt-luna-latest", "name": "OpenAI: GPT Luna Latest", "input": 0.1, "output": 0.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "sakana", "model": "sakana/fugu-ultra-v2", "name": "Sakana: Fugu Ultra v2", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "sakana", "model": "sakana/fugu-max", "name": "Sakana: Fugu Max", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash-vl", "name": "inclusionAI: Ling 3.0 Flash VL", "input": 0.06, "output": 0.18, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4.1-flash", "name": "DeepSeek: DeepSeek V4.1 Flash", "input": 0.056, "output": 0.12, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4.1-flash:batch", "name": "DeepSeek: DeepSeek V4.1 Flash (batch)", "input": 0.05, "output": 0.15, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "inception", "model": "inception/mercury-2.5", "name": "Inception: Mercury 2.5", "input": 0.04, "output": 0.15, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "nex-agi", "model": "nex-agi/nex-n2.5-mini", "name": "Nex AGI: Nex-N2.5-Mini", "input": 0.025, "output": 0.1, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-astra", "name": "OpenAI: GPT-6 Astra", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-astra:batch", "name": "OpenAI: GPT-6 Astra (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-6-astra-pro", "name": "OpenAI: GPT-6 Astra Pro", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.8-max-0902", "name": "Qwen: Qwen3.8 Max (0902)", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "meta", "model": "meta/muse-spark-1.3-contributor", "name": "Meta: Muse Spark 1.3 Contributor", "input": 0.1, "output": 0.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "google", "model": "google/gemini-3.8-flash", "name": "Google: Gemini 3.8 Flash", "input": 0.825, "output": 4.125, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5.1", "name": "Anthropic: Claude Fable 5.1", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "tencent", "model": "tencent/hy4-preview", "name": "Tencent: Hy4 preview", "input": 0.834, "output": 2.501, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~z-ai", "model": "~z-ai/glm-flash-latest", "name": "Z.ai: GLM Flash Latest", "input": 0.037476, "output": 0.16, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.8-flash", "name": "Qwen: Qwen3.8 Flash", "input": 0.15, "output": 0.47, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-flash", "name": "Z.ai: GLM 5.3 Flash", "input": 0.037476, "output": 0.16, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.3-flash:batch", "name": "Z.ai: GLM 5.3 Flash (batch)", "input": 0.05, "output": 0.18, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "meta", "model": "meta/muse-spark-1.2-contributor", "name": "Meta: Muse Spark 1.2 Contributor", "input": 0.1, "output": 0.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek: DeepSeek V4 Flash Vision Exp", "input": 0.2156, "output": 0.6468, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "tencent", "model": "tencent/hy-mt2-1.8b", "name": "Tencent: Hy-MT2-1.8B", "input": 0.044, "output": 0.177, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "~z-ai", "model": "~z-ai/glm-latest", "name": "Z.ai: GLM Latest", "input": 0.079, "output": 1.4, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "tencent", "model": "tencent/hy-mt2-7b", "name": "Tencent: Hy-MT2-7B", "input": 0.074, "output": 0.295, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.3", "name": "Z.ai: GLM 5.3", "input": 0.079, "output": 1.4, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.3:batch", "name": "Z.ai: GLM 5.3 (batch)", "input": 0.45, "output": 2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.8-27b", "name": "Qwen: Qwen3.8 27B", "input": 0.04, "output": 1.35, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-pro-0813", "name": "DeepSeek: DeepSeek V4 Pro 0813", "input": 0.66, "output": 1.98, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "x-ai", "model": "x-ai/grok-4.6", "name": "SpaceXAI: Grok 4.6", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-lightning", "name": "NVIDIA: Nemotron 3.5 Lightning", "input": 0.07, "output": 0.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "sakana", "model": "sakana/sakana-namazu", "name": "Sakana: Sakana Namazu", "input": 0.95, "output": 4, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "upstage", "model": "upstage/solar-pro4", "name": "Upstage: Solar Pro 4", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "meta", "model": "meta/muse-glimmer-30b", "name": "Meta: Muse Glimmer 30B", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "~deepseek", "model": "~deepseek/deepseek-v4-flash-latest", "name": "DeepSeek: DeepSeek V4 Flash Latest", "input": 392e-5, "output": 0.12, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek: DeepSeek V4 Flash 0731", "input": 0.44, "output": 1.32, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling-small", "name": "Thinking Machines: Inkling Small", "input": 0.45, "output": 1.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling-small:free", "name": "Thinking Machines: Inkling Small (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.7-flash", "name": "Qwen: Qwen3.7 Flash", "input": 0.03, "output": 0.13, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-5", "name": "Anthropic: Claude Opus 5", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "inclusionai", "model": "inclusionai/ling-3.0-flash", "name": "inclusionAI: Ling 3.0 Flash", "input": 0.021, "output": 0.063, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "meituan", "model": "meituan/longcat-2.0", "name": "Meituan: LongCat 2.0", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling", "name": "Thinking Machines: Inkling", "input": 1, "output": 4.05, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "thinkingmachines", "model": "thinkingmachines/inkling:free", "name": "Thinking Machines: Inkling (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "openrouter", "model": "openrouter/auto-beta", "name": "Auto Router (Beta)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "image" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k3", "name": "MoonshotAI: Kimi K3", "input": 0.239, "output": 11.936, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k3:batch", "name": "MoonshotAI: Kimi K3 (batch)", "input": 2.28, "output": 11.4, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-luna-pro", "name": "OpenAI: GPT-5.6 Luna Pro", "input": 0.2, "output": 1.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-luna-pro:batch", "name": "OpenAI: GPT-5.6 Luna Pro (batch)", "input": 0.1, "output": 0.6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-luna", "name": "OpenAI: GPT-5.6 Luna", "input": 0.2, "output": 1.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-luna:batch", "name": "OpenAI: GPT-5.6 Luna (batch)", "input": 0.1, "output": 0.6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-terra", "name": "OpenAI: GPT-5.6 Terra", "input": 2, "output": 12, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-sol-pro:batch", "name": "OpenAI: GPT-5.6 Sol Pro (batch)", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-sol", "name": "OpenAI: GPT-5.6 Sol", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.6-sol:batch", "name": "OpenAI: GPT-5.6 Sol (batch)", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "x-ai", "model": "x-ai/grok-4.5", "name": "SpaceXAI: Grok 4.5", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "~x-ai", "model": "~x-ai/grok-latest", "name": "xAI: Grok Latest", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "aion-labs", "model": "aion-labs/aion-3.0", "name": "AionLabs: Aion-3.0", "input": 3, "output": 6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "tencent", "model": "tencent/hy3", "name": "Tencent: Hy3", "input": 0.132, "output": 0.528, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5", "name": "Anthropic: Claude Sonnet 5", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-5:batch", "name": "Anthropic: Claude Sonnet 5 (batch)", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "image" }, { "provider": "sakana", "model": "sakana/fugu-ultra", "name": "Sakana: Fugu Ultra", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "image" }, { "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", "out": "image" }, { "provider": "cohere", "model": "cohere/north-mini-code:free", "name": "Cohere: North Mini Code (free)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.2", "name": "Z.ai: GLM 5.2", "input": 0.62, "output": 2.42, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openrouter", "model": "openrouter/fusion", "name": "OpenRouter: Fusion", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "~anthropic", "model": "~anthropic/claude-fable-latest", "name": "Anthropic: Claude Fable Latest", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5", "name": "Anthropic: Claude Fable 5", "input": 10, "output": 50, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-fable-5:batch", "name": "Anthropic: Claude Fable 5 (batch)", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3.5-content-safety", "name": "NVIDIA: Nemotron 3.5 Content Safety", "input": 0.2, "output": 0.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.7-plus", "name": "Qwen: Qwen3.7 Plus", "input": 0.32, "output": 1.28, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.7-plus:batch", "name": "Qwen: Qwen3.7 Plus (batch)", "input": 0.23, "output": 0.92, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m3", "name": "MiniMax: MiniMax M3", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "stepfun", "model": "stepfun/step-3.7-flash", "name": "StepFun: Step 3.7 Flash", "input": 0.2, "output": 1.15, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.8", "name": "Anthropic: Claude Opus 4.8", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.7-max", "name": "Qwen: Qwen3.7 Max", "input": 1.475, "output": 4.425, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "perceptron", "model": "perceptron/perceptron-mk1", "name": "Perceptron: Perceptron Mk1", "input": 0.15, "output": 1.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-chat-latest", "name": "OpenAI: GPT Chat Latest", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "~anthropic", "model": "~anthropic/claude-haiku-latest", "name": "Anthropic: Claude Haiku Latest", "input": 0.1, "output": 0.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~openai", "model": "~openai/gpt-mini-latest", "name": "OpenAI: GPT Mini Latest", "input": 0.75, "output": 4.5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~google", "model": "~google/gemini-pro-latest", "name": "Google: Gemini Pro Latest", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~moonshotai", "model": "~moonshotai/kimi-latest", "name": "MoonshotAI: Kimi Latest", "input": 0.238, "output": 16, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~google", "model": "~google/gemini-flash-latest", "name": "Google: Gemini Flash Latest", "input": 0.75, "output": 3.75, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "~anthropic", "model": "~anthropic/claude-sonnet-latest", "name": "Anthropic: Claude Sonnet Latest", "input": 2, "output": 10, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.5-plus-20260420", "name": "Qwen: Qwen3.5 Plus 2026-04-20", "input": 0.3, "output": 1.8, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.6-flash", "name": "Qwen: Qwen3.6 Flash", "input": 0.1875, "output": 1.125, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.6-35b-a3b", "name": "Qwen: Qwen3.6 35B A3B", "input": 0.1, "output": 0.95, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.6-27b", "name": "Qwen: Qwen3.6 27B", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.5-pro", "name": "OpenAI: GPT-5.5 Pro", "input": 30, "output": 180, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.5", "name": "OpenAI: GPT-5.5", "input": 5, "output": 30, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-pro", "name": "DeepSeek: DeepSeek V4 Pro 0423", "input": 0.95526, "output": 1.91052, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v4-flash", "name": "DeepSeek: DeepSeek V4 Flash 0423", "input": 0.091, "output": 0.182, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "tencent", "model": "tencent/hy3-preview", "name": "Tencent: Hy3 preview", "input": 0.18, "output": 0.6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "xiaomi", "model": "xiaomi/mimo-v2.5", "name": "Xiaomi: MiMo-V2.5", "input": 0.14, "output": 0.28, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "image" }, { "provider": "~anthropic", "model": "~anthropic/claude-opus-latest", "name": "Anthropic: Claude Opus Latest", "input": 4, "output": 20, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "openrouter", "model": "openrouter/pareto-code", "name": "Pareto Code Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2.6", "name": "MoonshotAI: Kimi K2.6", "input": 0.65, "output": 3.41, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.7", "name": "Anthropic: Claude Opus 4.7", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-5.1", "name": "Z.ai: GLM 5.1", "input": 0.966, "output": 3.036, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "google", "model": "google/gemma-4-26b-a4b-it", "name": "Google: Gemma 4 26B A4B ", "input": 0.09, "output": 0.3, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "google", "model": "google/gemma-4-31b-it", "name": "Google: Gemma 4 31B", "input": 0.2, "output": 0.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.6-plus", "name": "Qwen: Qwen3.6 Plus", "input": 0.325, "output": 1.95, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "arcee-ai", "model": "arcee-ai/trinity-large-thinking", "name": "Arcee AI: Trinity Large Thinking", "input": 0.25, "output": 0.8, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "google", "model": "google/lyria-3-pro-preview", "name": "Google: Lyria 3 Pro Preview", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us", "out": "audio" }, { "provider": "google", "model": "google/lyria-3-clip-preview", "name": "Google: Lyria 3 Clip Preview", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "us", "out": "audio" }, { "provider": "rekaai", "model": "rekaai/reka-edge", "name": "Reka Edge", "input": 0.1, "output": 0.1, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m2.7", "name": "MiniMax: MiniMax M2.7", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.4-nano", "name": "OpenAI: GPT-5.4 Nano", "input": 0.2, "output": 1.25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.4-nano:batch", "name": "OpenAI: GPT-5.4 Nano (batch)", "input": 0.1, "output": 0.625, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-small-2603", "name": "Mistral: Mistral Small 4", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-super-120b-a12b", "name": "NVIDIA: Nemotron 3 Super", "input": 0.08, "output": 0.45, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.5-9b", "name": "Qwen: Qwen3.5-9B", "input": 0.1, "output": 0.15, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.4-pro", "name": "OpenAI: GPT-5.4 Pro", "input": 30, "output": 180, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.4", "name": "OpenAI: GPT-5.4", "input": 2.5, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "inception", "model": "inception/mercury-2", "name": "Inception: Mercury 2", "input": 0.25, "output": 0.75, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "bytedance-seed", "model": "bytedance-seed/seed-2.0-mini", "name": "ByteDance Seed: Seed-2.0-Mini", "input": 0.1, "output": 0.4, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "image" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.5-27b", "name": "Qwen: Qwen3.5-27B", "input": 0.27, "output": 2.16, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "aion-labs", "model": "aion-labs/aion-2.0", "name": "AionLabs: Aion-2.0", "input": 0.8, "output": 1.6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.6", "name": "Anthropic: Claude Sonnet 4.6", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3.5-397b-a17b", "name": "Qwen: Qwen3.5 397B A17B", "input": 0.39, "output": 2.34, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m2.5", "name": "MiniMax: MiniMax M2.5", "input": 0.27, "output": 0.95, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.6", "name": "Anthropic: Claude Opus 4.6", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-coder-next", "name": "Qwen: Qwen3 Coder Next", "input": 0.12, "output": 0.8, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openrouter", "model": "openrouter/free", "name": "Free Models Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "stepfun", "model": "stepfun/step-3.5-flash", "name": "StepFun: Step 3.5 Flash", "input": 0.1, "output": 0.3, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2.5", "name": "MoonshotAI: Kimi K2.5", "input": 0.5, "output": 2.5, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "upstage", "model": "upstage/solar-pro-3", "name": "Upstage: Solar Pro 3", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m2-her", "name": "MiniMax: MiniMax M2-her", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "writer", "model": "writer/palmyra-x5", "name": "Writer: Palmyra X5", "input": 0.6, "output": 6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "openai", "model": "openai/gpt-audio", "name": "OpenAI: GPT Audio", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "audio" }, { "provider": "openai", "model": "openai/gpt-audio-mini", "name": "OpenAI: GPT Audio Mini", "input": 0.6, "output": 2.4, "unit": "per_1m_tokens", "region": "us", "out": "audio" }, { "provider": "z-ai", "model": "z-ai/glm-4.7-flash", "name": "Z.ai: GLM 4.7 Flash", "input": 0.0605, "output": 0.4, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m2.1", "name": "MiniMax: MiniMax M2.1", "input": 0.3, "output": 1.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-4.7", "name": "Z.ai: GLM 4.7", "input": 0.54, "output": 1.98, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "nvidia", "model": "nvidia/nemotron-3-nano-30b-a3b", "name": "NVIDIA: Nemotron 3 Nano 30B A3B", "input": 0.06, "output": 0.24, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.2-pro", "name": "OpenAI: GPT-5.2 Pro", "input": 21, "output": 168, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5.2", "name": "OpenAI: GPT-5.2", "input": 1.75, "output": 14, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/devstral-2512", "name": "Mistral: Devstral 2 2512", "input": 0.4, "output": 2, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "relace", "model": "relace/relace-search", "name": "Relace: Relace Search", "input": 1, "output": 3, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-4.6v", "name": "Z.ai: GLM 4.6V", "input": 0.3, "output": 0.9, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openrouter", "model": "openrouter/bodybuilder", "name": "Body Builder (beta)", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/ministral-14b-2512", "name": "Mistral: Ministral 3 14B 2512", "input": 0.2, "output": 0.2, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/ministral-3b-2512", "name": "Mistral: Ministral 3 3B 2512", "input": 0.1, "output": 0.1, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", "input": 0.28, "output": 0.42, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.5", "name": "Anthropic: Claude Opus 4.5", "input": 5, "output": 25, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "image" }, { "provider": "openai", "model": "openai/gpt-5.1", "name": "OpenAI: GPT-5.1", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2-thinking", "name": "MoonshotAI: Kimi K2 Thinking", "input": 0.6, "output": 2.5, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "perplexity", "model": "perplexity/sonar-pro-search", "name": "Perplexity: Sonar Pro Search", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/voxtral-small-24b-2507", "name": "Mistral: Voxtral Small 24B 2507", "input": 0.1, "output": 0.3, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m2", "name": "MiniMax: MiniMax M2", "input": 0.255, "output": 1.02, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "image" }, { "provider": "anthropic", "model": "anthropic/claude-haiku-4.5", "name": "Anthropic: Claude Haiku 4.5", "input": 1, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-vl-8b-instruct", "name": "Qwen: Qwen3 VL 8B Instruct", "input": 0.25, "output": 0.75, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5-image", "name": "OpenAI: GPT-5 Image", "input": 10, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "image" }, { "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", "out": "image" }, { "provider": "qwen", "model": "qwen/qwen3-vl-30b-a3b-thinking", "name": "Qwen: Qwen3 VL 30B A3B Thinking", "input": 0.29, "output": 1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5-pro", "name": "OpenAI: GPT-5 Pro", "input": 15, "output": 120, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-4.6", "name": "Z.ai: GLM 4.6", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-sonnet-4.5", "name": "Anthropic: Claude Sonnet 4.5", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "relace", "model": "relace/relace-apply-3", "name": "Relace: Relace Apply 3", "input": 0.85, "output": 1.25, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-v3.1-terminus", "name": "DeepSeek: DeepSeek V3.1 Terminus", "input": 0.27, "output": 1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-coder-flash", "name": "Qwen: Qwen3 Coder Flash", "input": 0.195, "output": 0.975, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", "input": 0.09, "output": 1.1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2-0905", "name": "MoonshotAI: Kimi K2 0905", "input": 0.6, "output": 2.5, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "nousresearch", "model": "nousresearch/hermes-4-405b", "name": "Nous: Hermes 4 405B", "input": 1, "output": 3, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3.1", "name": "Mistral: Mistral Medium 3.1", "input": 0.4, "output": 2, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3.1:batch", "name": "Mistral: Mistral Medium 3.1 (batch)", "input": 0.2, "output": 1, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "z-ai", "model": "z-ai/glm-4.5v", "name": "Z.ai: GLM 4.5V", "input": 0.6, "output": 1.8, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5", "name": "OpenAI: GPT-5", "input": 1.25, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5:batch", "name": "OpenAI: GPT-5 (batch)", "input": 0.625, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5-mini", "name": "OpenAI: GPT-5 Mini", "input": 0.25, "output": 2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5-nano", "name": "OpenAI: GPT-5 Nano", "input": 0.05, "output": 0.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-5-nano:batch", "name": "OpenAI: GPT-5 Nano (batch)", "input": 0.025, "output": 0.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-oss-20b", "name": "OpenAI: gpt-oss-20b", "input": 0.018, "output": 0.09, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "anthropic", "model": "anthropic/claude-opus-4.1", "name": "Anthropic: Claude Opus 4.1", "input": 15, "output": 75, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/codestral-2508", "name": "Mistral: Codestral 2508", "input": 0.3, "output": 0.9, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "mistralai", "model": "mistralai/codestral-2508:batch", "name": "Mistral: Codestral 2508 (batch)", "input": 0.15, "output": 0.45, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-30b-a3b-instruct-2507", "name": "Qwen: Qwen3 30B A3B Instruct 2507", "input": 0.09, "output": 0.3, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-235b-a22b-thinking-2507", "name": "Qwen: Qwen3 235B A22B Thinking 2507", "input": 0.45, "output": 3.5, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-coder", "name": "Qwen: Qwen3 Coder 480B A35B", "input": 0.3, "output": 1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "bytedance", "model": "bytedance/ui-tars-1.5-7b", "name": "ByteDance: UI-TARS 7B ", "input": 0.1, "output": 0.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "google", "model": "google/gemini-2.5-flash-lite", "name": "Google: Gemini 2.5 Flash Lite", "input": 0.1, "output": 0.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "google", "model": "google/gemini-2.5-flash-lite:batch", "name": "Google: Gemini 2.5 Flash Lite (batch)", "input": 0.05, "output": 0.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-235b-a22b-2507", "name": "Qwen: Qwen3 235B A22B Instruct 2507", "input": 0.09, "output": 0.55, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "moonshotai", "model": "moonshotai/kimi-k2", "name": "MoonshotAI: Kimi K2 0711", "input": 0.57, "output": 2.3, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "cognitivecomputations", "model": "cognitivecomputations/dolphin-mistral-24b-venice-edition", "name": "Venice: Uncensored", "input": 0.2, "output": 0.9, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "tencent", "model": "tencent/hunyuan-a13b-instruct", "name": "Tencent: Hunyuan A13B Instruct", "input": 0.14, "output": 0.57, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "morph", "model": "morph/morph-v3-large", "name": "Morph: Morph V3 Large", "input": 0.9, "output": 1.9, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "morph", "model": "morph/morph-v3-fast", "name": "Morph: Morph V3 Fast", "input": 0.8, "output": 1.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-m1", "name": "MiniMax: MiniMax M1", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/o3-pro", "name": "OpenAI: o3 Pro", "input": 20, "output": 80, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", "input": 0.5, "output": 2.15, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-medium-3", "name": "Mistral: Mistral Medium 3", "input": 0.4, "output": 2, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-30b-a3b", "name": "Qwen: Qwen3 30B A3B", "input": 0.12, "output": 0.5, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-14b", "name": "Qwen: Qwen3 14B", "input": 0.12, "output": 0.24, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", "input": 0.08, "output": 0.28, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/o4-mini-high", "name": "OpenAI: o4 Mini High", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/o3", "name": "OpenAI: o3", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/o3:batch", "name": "OpenAI: o3 (batch)", "input": 1, "output": 4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/o4-mini", "name": "OpenAI: o4 Mini", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/o4-mini:batch", "name": "OpenAI: o4 Mini (batch)", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1", "name": "OpenAI: GPT-4.1", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1:batch", "name": "OpenAI: GPT-4.1 (batch)", "input": 1, "output": 4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1-mini", "name": "OpenAI: GPT-4.1 Mini", "input": 0.4, "output": 1.6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1-mini:batch", "name": "OpenAI: GPT-4.1 Mini (batch)", "input": 0.2, "output": 0.8, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1-nano", "name": "OpenAI: GPT-4.1 Nano", "input": 0.1, "output": 0.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4.1-nano:batch", "name": "OpenAI: GPT-4.1 Nano (batch)", "input": 0.05, "output": 0.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "meta-llama", "model": "meta-llama/llama-4-scout", "name": "Meta: Llama 4 Scout", "input": 0.1, "output": 0.3, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek: DeepSeek V3 0324", "input": 0.29, "output": 1.14, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/o1-pro", "name": "OpenAI: o1-pro", "input": 150, "output": 600, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-small-3.1-24b-instruct", "name": "Mistral: Mistral Small 3.1 24B", "input": 0.351, "output": 0.555, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "google", "model": "google/gemma-3-4b-it", "name": "Google: Gemma 3 4B", "input": 0.04, "output": 0.05, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "google", "model": "google/gemma-3-12b-it", "name": "Google: Gemma 3 12B", "input": 0.05, "output": 0.15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "cohere", "model": "cohere/command-a", "name": "Cohere: Command A", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "rekaai", "model": "rekaai/reka-flash-3", "name": "Reka Flash 3", "input": 0.1, "output": 0.2, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "google", "model": "google/gemma-3-27b-it", "name": "Google: Gemma 3 27B", "input": 0.08, "output": 0.35, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "thedrummer", "model": "thedrummer/skyfall-36b-v2", "name": "TheDrummer: Skyfall 36B V2", "input": 0.55, "output": 0.8, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "perplexity", "model": "perplexity/sonar-reasoning-pro", "name": "Perplexity: Sonar Reasoning Pro", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "perplexity", "model": "perplexity/sonar-pro", "name": "Perplexity: Sonar Pro", "input": 3, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "perplexity", "model": "perplexity/sonar-deep-research", "name": "Perplexity: Sonar Deep Research", "input": 2, "output": 8, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-saba", "name": "Mistral: Saba", "input": 0.2, "output": 0.6, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "openai", "model": "openai/o3-mini-high", "name": "OpenAI: o3 Mini High", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "aion-labs", "model": "aion-labs/aion-rp-llama-3.1-8b", "name": "AionLabs: Aion-RP 1.0 (8B)", "input": 0.8, "output": 1.6, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen2.5-vl-72b-instruct", "name": "Qwen: Qwen2.5 VL 72B Instruct", "input": 0.8, "output": 1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen-plus", "name": "Qwen: Qwen-Plus", "input": 0.26, "output": 0.78, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/o3-mini", "name": "OpenAI: o3 Mini", "input": 1.1, "output": 4.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/o3-mini:batch", "name": "OpenAI: o3 Mini (batch)", "input": 0.55, "output": 2.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-small-24b-instruct-2501", "name": "Mistral: Mistral Small 3", "input": 0.05, "output": 0.08, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "perplexity", "model": "perplexity/sonar", "name": "Perplexity: Sonar", "input": 1, "output": 1, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "minimax", "model": "minimax/minimax-01", "name": "MiniMax: MiniMax-01", "input": 0.2, "output": 1.1, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "microsoft", "model": "microsoft/phi-4", "name": "Microsoft: Phi 4", "input": 0.07, "output": 0.14, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "deepseek", "model": "deepseek/deepseek-chat", "name": "DeepSeek: DeepSeek V3", "input": 0.2574, "output": 1.0287, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "provider": "openai", "model": "openai/o1", "name": "OpenAI: o1", "input": 15, "output": 60, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", "input": 0.1, "output": 0.32, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "amazon", "model": "amazon/nova-pro-v1", "name": "Amazon: Nova Pro 1.0", "input": 0.8, "output": 3.2, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-large-2407", "name": "Mistral Large 2407", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "provider": "thedrummer", "model": "thedrummer/unslopnemo-12b", "name": "TheDrummer: UnslopNemo 12B", "input": 0.4, "output": 0.4, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "anthracite-org", "model": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", "input": 2.5, "output": 5, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen-2.5-7b-instruct", "name": "Qwen: Qwen2.5 7B Instruct", "input": 0.1, "output": 0.2, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.2-3b-instruct", "name": "Meta: Llama 3.2 3B Instruct", "input": 0.0509, "output": 0.335, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "qwen", "model": "qwen/qwen-2.5-72b-instruct", "name": "Qwen2.5 72B Instruct", "input": 0.36, "output": 0.4, "unit": "per_1m_tokens", "region": "cn", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "sao10k", "model": "sao10k/l3-lunaris-8b", "name": "Sao10K: Llama 3 8B Lunaris", "input": 0.04, "output": 0.05, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", "input": 0.4, "output": 0.4, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "meta-llama", "model": "meta-llama/llama-3.1-8b-instruct", "name": "Meta: Llama 3.1 8B Instruct", "input": 0.05, "output": 0.08, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-nemo", "name": "Mistral: Mistral Nemo", "input": 0.029, "output": 0.03, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4o-mini", "name": "OpenAI: GPT-4o-mini", "input": 0.15, "output": 0.6, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4o", "name": "OpenAI: GPT-4o", "input": 2.5, "output": 10, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4o:batch", "name": "OpenAI: GPT-4o (batch)", "input": 1.25, "output": 5, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mixtral-8x22b-instruct", "name": "Mistral: Mixtral 8x22B Instruct", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4-turbo", "name": "OpenAI: GPT-4 Turbo", "input": 10, "output": 30, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4-turbo:batch", "name": "OpenAI: GPT-4 Turbo (batch)", "input": 5, "output": 15, "unit": "per_1m_tokens", "region": "us", "out": "text" }, { "provider": "mistralai", "model": "mistralai/mistral-large", "name": "Mistral Large", "input": 2, "output": 6, "unit": "per_1m_tokens", "region": "eu", "out": "text" }, { "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", "out": "text" }, { "provider": "openrouter", "model": "openrouter/auto", "name": "Auto Router", "input": 0, "output": 0, "unit": "per_1m_tokens", "region": "other", "out": "image" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "mancer", "model": "mancer/weaver", "name": "Mancer: Weaver (alpha)", "input": 0.4, "output": 0.75, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "undi95", "model": "undi95/remm-slerp-l2-13b", "name": "ReMM SLERP 13B", "input": 0.35, "output": 0.65, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "provider": "gryphe", "model": "gryphe/mythomax-l2-13b", "name": "MythoMax 13B", "input": 0.08, "output": 0.11, "unit": "per_1m_tokens", "region": "other", "out": "text" }, { "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", "out": "text" }, { "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", "out": "text" }, { "provider": "openai", "model": "openai/gpt-4", "name": "OpenAI: GPT-4", "input": 30, "output": 60, "unit": "per_1m_tokens", "region": "us", "out": "text" }];
|
|
111
|
+
var SEEN_DIRECT = { "openai": ["babbage-002", "chat-latest", "chatgpt-image-latest", "davinci-002", "gpt-3.5-turbo", "gpt-3.5-turbo-0125", "gpt-3.5-turbo-1106", "gpt-3.5-turbo-16k", "gpt-3.5-turbo-instruct", "gpt-3.5-turbo-instruct-0914", "gpt-4", "gpt-4-0613", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4.1", "gpt-4.1-2025-04-14", "gpt-4.1-mini", "gpt-4.1-mini-2025-04-14", "gpt-4.1-nano", "gpt-4.1-nano-2025-04-14", "gpt-4o", "gpt-4o-2024-05-13", "gpt-4o-2024-08-06", "gpt-4o-2024-11-20", "gpt-4o-mini", "gpt-4o-mini-2024-07-18", "gpt-4o-mini-search-preview", "gpt-4o-mini-search-preview-2025-03-11", "gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-03-20", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-mini-tts", "gpt-4o-mini-tts-2025-03-20", "gpt-4o-mini-tts-2025-12-15", "gpt-4o-search-preview", "gpt-4o-search-preview-2025-03-11", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-5", "gpt-5-2025-08-07", "gpt-5-chat-latest", "gpt-5-codex", "gpt-5-mini", "gpt-5-mini-2025-08-07", "gpt-5-nano", "gpt-5-nano-2025-08-07", "gpt-5-pro", "gpt-5-pro-2025-10-06", "gpt-5-search-api", "gpt-5-search-api-2025-10-14", "gpt-5.1", "gpt-5.1-2025-11-13", "gpt-5.1-chat-latest", "gpt-5.1-codex", "gpt-5.1-codex-max", "gpt-5.1-codex-mini", "gpt-5.2", "gpt-5.2-2025-12-11", "gpt-5.2-chat-latest", "gpt-5.2-codex", "gpt-5.2-pro", "gpt-5.2-pro-2025-12-11", "gpt-5.3-chat-latest", "gpt-5.3-codex", "gpt-5.4", "gpt-5.4-2026-03-05", "gpt-5.4-mini", "gpt-5.4-mini-2026-03-17", "gpt-5.4-nano", "gpt-5.4-nano-2026-03-17", "gpt-5.4-pro", "gpt-5.4-pro-2026-03-05", "gpt-5.5", "gpt-5.5-2026-04-23", "gpt-5.5-pro", "gpt-5.5-pro-2026-04-23", "gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-6-astra", "gpt-6-luna", "gpt-6-sol", "gpt-6.1-sol", "gpt-audio", "gpt-audio-1.5", "gpt-audio-2025-08-28", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-image-1", "gpt-image-1-mini", "gpt-image-1.5", "gpt-image-2", "gpt-image-2-2026-04-21", "gpt-image-2.5-flare", "gpt-image-2.5-flare-2026-09-08", "gpt-image-2.5-sunburst", "gpt-image-2.5-sunburst-2026-09-08", "gpt-live-1", "gpt-live-transcribe", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2", "gpt-realtime-2.1", "gpt-realtime-2.1-mini", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-12-15", "gpt-realtime-translate", "gpt-realtime-whisper", "gpt-transcribe", "o1", "o1-2024-12-17", "o1-pro", "o1-pro-2025-03-19", "o3", "o3-2025-04-16", "o3-deep-research", "o3-deep-research-2025-06-26", "o3-mini", "o3-mini-2025-01-31", "o3-pro", "o3-pro-2025-06-10", "o4-mini", "o4-mini-2025-04-16", "o4-mini-deep-research", "o4-mini-deep-research-2025-06-26", "omni-moderation-2024-09-26", "omni-moderation-latest", "sora-2", "sora-2-pro", "text-embedding-3-large", "text-embedding-3-small", "text-embedding-ada-002", "tts-1", "tts-1-1106", "tts-1-hd", "tts-1-hd-1106", "whisper-1"], "gemini": ["antigravity-preview-05-2026", "antigravity-preview-09-2026", "antigravity-preview-latest", "aqa", "deep-research-max-preview-04-2026", "deep-research-preview-04-2026", "deep-research-pro-preview-12-2025", "gemini-2.5-computer-use-preview-10-2025", "gemini-2.5-flash", "gemini-2.5-flash-image", "gemini-2.5-flash-lite", "gemini-2.5-flash-preview-tts", "gemini-2.5-pro", "gemini-2.5-pro-preview-tts", "gemini-3-flash-preview", "gemini-3-pro-image", "gemini-3-pro-image-preview", "gemini-3.1-flash-image", "gemini-3.1-flash-image-preview", "gemini-3.1-flash-lite", "gemini-3.1-flash-lite-image", "gemini-3.1-flash-lite-preview", "gemini-3.1-flash-tts-preview", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools", "gemini-3.5-flash", "gemini-3.5-flash-lite", "gemini-3.5-transcribe", "gemini-3.6-flash", "gemini-3.7-flash", "gemini-3.8-flash", "gemini-3.8-flash-lite-tts", "gemini-3.8-flash-tts", "gemini-4-argon", "gemini-embedding-001", "gemini-embedding-2", "gemini-embedding-2-preview", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-nano-banana-2.1", "gemini-omni-1.1-flash", "gemini-omni-flash-preview", "gemini-pro-latest", "gemini-robotics-er-2-preview", "gemma-4-26b-a4b-it", "gemma-4-31b-it", "lyria-3-clip-preview", "lyria-3-pro-preview", "lyria-3.5", "nano-banana-pro-preview"], "mistral": ["codestral-2508", "codestral-embed", "codestral-embed-2505", "codestral-latest", "glm-5-2", "labs-leanstral-1-5", "labs-leanstral-1-5-1", "magistral-medium-latest", "magistral-small-latest", "ministral-14b-2512", "ministral-14b-latest", "ministral-3b-2512", "ministral-3b-latest", "ministral-8b-2512", "ministral-8b-latest", "mistral-code-fim-latest", "mistral-code-latest", "mistral-embed", "mistral-embed-2312", "mistral-large-2512", "mistral-large-4", "mistral-large-4-0", "mistral-large-latest", "mistral-medium", "mistral-medium-2604", "mistral-medium-3", "mistral-medium-3-5", "mistral-medium-3.5", "mistral-medium-latest", "mistral-moderation-2603", "mistral-ocr-2512", "mistral-ocr-3", "mistral-ocr-3-0", "mistral-ocr-4", "mistral-ocr-4-1", "mistral-ocr-latest", "mistral-small-2603", "mistral-small-latest", "mistral-vibe-cli-fast", "mistral-vibe-cli-latest", "mistral-vibe-cli-with-tools", "voxtral-mini-2602", "voxtral-mini-latest", "voxtral-mini-realtime-2602", "voxtral-mini-realtime-latest", "voxtral-mini-transcribe-realtime-2602", "voxtral-mini-tts-2603", "voxtral-mini-tts-latest", "voxtral-small-2507", "voxtral-small-latest", "zai-glm-5", "zai-glm-5-2", "zai-glm-5-3", "zai-glm-latest"], "elevenlabs": ["eleven_english_sts_v2", "eleven_flash_v2", "eleven_flash_v2_5", "eleven_multilingual_sts_v2", "eleven_multilingual_v2", "eleven_turbo_v2", "eleven_turbo_v2_5", "eleven_v3", "eleven_v3_conversational", "eleven_v4", "eleven_v4_turbo"], "anthropic": ["claude-fable-5", "claude-fable-5-1", "claude-haiku-4-5-20251001", "claude-haiku-5-5", "claude-opus-4-5-20251101", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-opus-5", "claude-opus-5-5", "claude-sonnet-4-5-20250929", "claude-sonnet-4-6", "claude-sonnet-5", "claude-sonnet-5-5"] };
|
|
112
|
+
|
|
113
|
+
// src/catalogue/pricing-api.ts
|
|
114
|
+
var basename = (id) => {
|
|
115
|
+
let s = id.toLowerCase();
|
|
116
|
+
const colon = s.lastIndexOf(":");
|
|
117
|
+
if (colon >= 0) s = s.slice(colon + 1);
|
|
118
|
+
const slash = s.lastIndexOf("/");
|
|
119
|
+
if (slash >= 0) s = s.slice(slash + 1);
|
|
120
|
+
return s;
|
|
121
|
+
};
|
|
122
|
+
function regionForProvider(provider) {
|
|
123
|
+
switch (provider) {
|
|
124
|
+
case "mistral":
|
|
125
|
+
case "mistralai":
|
|
126
|
+
return "eu";
|
|
127
|
+
case "deepseek":
|
|
128
|
+
return "cn";
|
|
129
|
+
case "anthropic":
|
|
130
|
+
case "openai":
|
|
131
|
+
case "google":
|
|
132
|
+
case "x-ai":
|
|
133
|
+
case "meta-llama":
|
|
134
|
+
return "us";
|
|
135
|
+
default:
|
|
136
|
+
return "other";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function classifyKind(id, out = "text") {
|
|
140
|
+
const m = id.toLowerCase();
|
|
141
|
+
if (/embed/.test(m)) return "embedding";
|
|
142
|
+
if (/moderat/.test(m)) return "moderation";
|
|
143
|
+
if (/(^|[/:-])ocr\b|-ocr/.test(m)) return "ocr";
|
|
144
|
+
if (/whisper|transcri|voxtral|(^|[/-])stt\b/.test(m)) return "transcribe";
|
|
145
|
+
if (/(^|[/-])tts\b|text-to-speech/.test(m)) return "tts";
|
|
146
|
+
if (/(^|[/:])jev-/.test(m)) return "judge";
|
|
147
|
+
if (/(^|[/-])veo-|video|kling|seedance/.test(m)) return "video";
|
|
148
|
+
if (out === "image" || /dall-e|imagen|(^|[/-])flux|recraft|nano-banana|-image(-|$)/.test(m)) return "image";
|
|
149
|
+
if (out === "audio") return "audio";
|
|
150
|
+
return "chat";
|
|
151
|
+
}
|
|
152
|
+
function versionDate(version) {
|
|
153
|
+
const m = /^(\d{4}-\d{2}-\d{2})/.exec(version ?? "");
|
|
154
|
+
return m ? m[1] : void 0;
|
|
155
|
+
}
|
|
156
|
+
function upstreamDirect(provider, model) {
|
|
157
|
+
const seen = SEEN_DIRECT[provider];
|
|
158
|
+
if (!seen) return "unknown";
|
|
159
|
+
return seen.includes(model) ? "listed" : "gone";
|
|
160
|
+
}
|
|
161
|
+
var _media = null;
|
|
162
|
+
function ensureMedia() {
|
|
163
|
+
if (_media) return _media;
|
|
164
|
+
const m = /* @__PURE__ */ new Map();
|
|
165
|
+
for (const [key, p] of Object.entries(MEDIA_PRICING)) {
|
|
166
|
+
const ci = key.indexOf(":");
|
|
167
|
+
const provider = ci >= 0 ? key.slice(0, ci) : "";
|
|
168
|
+
const model = ci >= 0 ? key.slice(ci + 1) : key;
|
|
169
|
+
const row = {
|
|
170
|
+
provider,
|
|
171
|
+
model,
|
|
172
|
+
unit: p.unit,
|
|
173
|
+
usd: p.usd,
|
|
174
|
+
checkedAt: p.checkedAt,
|
|
175
|
+
region: regionForProvider(provider),
|
|
176
|
+
source: "curated"
|
|
177
|
+
};
|
|
178
|
+
if (row.unit === "per_sec") row.perSec = row.usd;
|
|
179
|
+
if (row.unit === "per_image") row.perImage = row.usd;
|
|
180
|
+
if (!m.has(model.toLowerCase())) m.set(model.toLowerCase(), row);
|
|
181
|
+
m.set(key.toLowerCase(), row);
|
|
182
|
+
}
|
|
183
|
+
_media = m;
|
|
184
|
+
return m;
|
|
185
|
+
}
|
|
186
|
+
function listMediaPrices() {
|
|
187
|
+
return [...new Set(ensureMedia().values())];
|
|
188
|
+
}
|
|
189
|
+
var _list = null;
|
|
190
|
+
var _full = null;
|
|
191
|
+
var _base = null;
|
|
192
|
+
function ensure() {
|
|
193
|
+
warnIfPricingStale();
|
|
194
|
+
if (_list) return;
|
|
195
|
+
const list = [];
|
|
196
|
+
const byBase = /* @__PURE__ */ new Map();
|
|
197
|
+
for (const r of PRICING_DATA) {
|
|
198
|
+
const e = {
|
|
199
|
+
provider: r.provider,
|
|
200
|
+
model: r.model,
|
|
201
|
+
name: r.name,
|
|
202
|
+
inputPer1M: r.input,
|
|
203
|
+
outputPer1M: r.output,
|
|
204
|
+
unit: "per_1m_tokens",
|
|
205
|
+
region: ["eu", "us", "cn", "other"].includes(r.region) ? r.region : "other",
|
|
206
|
+
source: "inventory",
|
|
207
|
+
checkedAt: PRICING_CHECKED_AT ? PRICING_CHECKED_AT.slice(0, 10) : void 0,
|
|
208
|
+
// An inventory row IS the OpenRouter catalogue snapshot, so it is listed there and
|
|
209
|
+
// reached through OpenRouter — until a curated direct price below claims it.
|
|
210
|
+
kind: classifyKind(r.model, r.out),
|
|
211
|
+
route: "openrouter",
|
|
212
|
+
callAs: { provider: "openrouter", model: r.model },
|
|
213
|
+
batch: r.model.endsWith(":batch"),
|
|
214
|
+
upstream: "listed"
|
|
215
|
+
};
|
|
216
|
+
list.push(e);
|
|
217
|
+
byBase.set(basename(r.model), e);
|
|
218
|
+
}
|
|
219
|
+
for (const [key, p] of Object.entries(PRICING)) {
|
|
220
|
+
const ci = key.indexOf(":");
|
|
221
|
+
const provider = ci >= 0 ? key.slice(0, ci) : "";
|
|
222
|
+
const modelPart = ci >= 0 ? key.slice(ci + 1) : key;
|
|
223
|
+
const existing = byBase.get(basename(modelPart));
|
|
224
|
+
const direct = provider !== "openrouter";
|
|
225
|
+
if (existing) {
|
|
226
|
+
existing.inputPer1M = p.inputPer1M;
|
|
227
|
+
existing.outputPer1M = p.outputPer1M;
|
|
228
|
+
existing.unit = "per_1m_tokens";
|
|
229
|
+
existing.source = "curated";
|
|
230
|
+
existing.checkedAt = versionDate(p.version);
|
|
231
|
+
if (direct) {
|
|
232
|
+
existing.route = "direct";
|
|
233
|
+
existing.callAs = { provider, model: modelPart };
|
|
234
|
+
existing.upstream = upstreamDirect(provider, modelPart);
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
const e = {
|
|
238
|
+
provider,
|
|
239
|
+
model: modelPart,
|
|
240
|
+
inputPer1M: p.inputPer1M,
|
|
241
|
+
outputPer1M: p.outputPer1M,
|
|
242
|
+
unit: "per_1m_tokens",
|
|
243
|
+
region: regionForProvider(provider),
|
|
244
|
+
source: "curated",
|
|
245
|
+
checkedAt: versionDate(p.version),
|
|
246
|
+
kind: classifyKind(modelPart),
|
|
247
|
+
route: direct ? "direct" : "openrouter",
|
|
248
|
+
callAs: { provider, model: modelPart },
|
|
249
|
+
batch: modelPart.endsWith(":batch"),
|
|
250
|
+
// A curated OpenRouter id that is NOT in the catalogue snapshot was not seen there.
|
|
251
|
+
upstream: direct ? upstreamDirect(provider, modelPart) : "unknown"
|
|
252
|
+
};
|
|
253
|
+
list.push(e);
|
|
254
|
+
byBase.set(basename(modelPart), e);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
_list = list;
|
|
258
|
+
_base = byBase;
|
|
259
|
+
_full = new Map(list.map((e) => [e.model.toLowerCase(), e]));
|
|
260
|
+
for (const [key, mp] of Object.entries(MEDIA_PRICING)) {
|
|
261
|
+
const model = key.slice(key.indexOf(":") + 1).toLowerCase();
|
|
262
|
+
const tok = _full.get(model) ?? byBase.get(basename(model));
|
|
263
|
+
if (tok) tok.alsoBilled = { unit: mp.unit, usd: mp.usd, checkedAt: mp.checkedAt };
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function getModelPrice(modelId) {
|
|
267
|
+
ensure();
|
|
268
|
+
const s = modelId.trim().toLowerCase();
|
|
269
|
+
const dated = stripDatedSuffix(s);
|
|
270
|
+
const media = ensureMedia();
|
|
271
|
+
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.
|
|
272
|
+
// Before F050 this returned undefined for every video model, which a caller could
|
|
273
|
+
// not tell apart from "we have no price for that anywhere".
|
|
274
|
+
media.get(s) ?? (s.includes(":") ? media.get(s.slice(s.indexOf(":") + 1)) : void 0);
|
|
275
|
+
}
|
|
276
|
+
function listModelPrices() {
|
|
277
|
+
ensure();
|
|
278
|
+
return _list.slice();
|
|
279
|
+
}
|
|
280
|
+
function findModelPrices(filter = {}) {
|
|
281
|
+
return listModelPrices().filter((m) => {
|
|
282
|
+
if (filter.provider && m.provider !== filter.provider) return false;
|
|
283
|
+
if (filter.region && m.region !== filter.region) return false;
|
|
284
|
+
if (filter.maxInputPer1M != null && m.inputPer1M > filter.maxInputPer1M) return false;
|
|
285
|
+
if (filter.free === true && (m.inputPer1M !== 0 || m.outputPer1M !== 0)) return false;
|
|
286
|
+
if (filter.free === false && m.inputPer1M === 0 && m.outputPer1M === 0) return false;
|
|
287
|
+
return true;
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
function priceCall(modelId, inputTokens, outputTokens) {
|
|
291
|
+
const p = getModelPrice(modelId);
|
|
292
|
+
if (!p || p.unit !== "per_1m_tokens") return void 0;
|
|
293
|
+
return inputTokens / 1e6 * p.inputPer1M + outputTokens / 1e6 * p.outputPer1M;
|
|
294
|
+
}
|
|
295
|
+
function pricingGeneratedAt() {
|
|
296
|
+
return PRICING_GENERATED_AT;
|
|
297
|
+
}
|
|
298
|
+
var PRICING_STALE_AFTER_DAYS = 35;
|
|
299
|
+
function computeFreshness(generatedAt, checkedAt, nowMs, units = []) {
|
|
300
|
+
const age = (iso) => {
|
|
301
|
+
const t = iso ? Date.parse(iso) : NaN;
|
|
302
|
+
return Number.isFinite(t) ? Math.max(0, Math.floor((nowMs - t) / 864e5)) : null;
|
|
303
|
+
};
|
|
304
|
+
const isStale = (d) => d === null || d > PRICING_STALE_AFTER_DAYS;
|
|
305
|
+
const ageDays = age(checkedAt);
|
|
306
|
+
const unitRows = units.map((u) => {
|
|
307
|
+
const a = age(u.checkedAt);
|
|
308
|
+
return { unit: u.unit, count: u.count, checkedAt: u.checkedAt, ageDays: a, stale: isStale(a) };
|
|
309
|
+
});
|
|
310
|
+
const caveats = unitRows.flatMap(
|
|
311
|
+
(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 ? [
|
|
312
|
+
`${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`
|
|
313
|
+
] : []
|
|
314
|
+
);
|
|
315
|
+
return {
|
|
316
|
+
generatedAt,
|
|
317
|
+
checkedAt,
|
|
318
|
+
ageDays,
|
|
319
|
+
stale: isStale(ageDays),
|
|
320
|
+
thresholdDays: PRICING_STALE_AFTER_DAYS,
|
|
321
|
+
units: unitRows,
|
|
322
|
+
caveats
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function pricingFreshness(nowMs = Date.now()) {
|
|
326
|
+
return computeFreshness(PRICING_GENERATED_AT, PRICING_CHECKED_AT, nowMs, [
|
|
327
|
+
{ unit: "per_1m_tokens", count: PRICING_DATA.length, checkedAt: PRICING_CHECKED_AT },
|
|
328
|
+
// Every media unit, derived from the table rather than listed here — a unit added
|
|
329
|
+
// to MEDIA_PRICING and forgotten here would be a unit the freshness API silently
|
|
330
|
+
// does not report, which is this whole feature's own bug wearing a new hat.
|
|
331
|
+
// Hand-maintained, and the monthly job cannot reach them, hence their own date:
|
|
332
|
+
// inheriting the token snapshot's would make an un-revised video price look freshly
|
|
333
|
+
// verified every time the token job ran.
|
|
334
|
+
...Object.entries(mediaUnitCounts()).map(([unit, count]) => ({
|
|
335
|
+
unit,
|
|
336
|
+
count,
|
|
337
|
+
checkedAt: MEDIA_PRICING_CHECKED_AT
|
|
338
|
+
}))
|
|
339
|
+
]);
|
|
340
|
+
}
|
|
341
|
+
var warned = false;
|
|
342
|
+
function warnIfPricingStale(nowMs = Date.now()) {
|
|
343
|
+
if (warned) return;
|
|
344
|
+
if (globalThis.process?.env?.BROBERG_AI_SDK_SILENCE_PRICING_WARNING) return;
|
|
345
|
+
const f = pricingFreshness(nowMs);
|
|
346
|
+
if (!f.stale && f.caveats.length === 0) return;
|
|
347
|
+
warned = true;
|
|
348
|
+
const parts = [];
|
|
349
|
+
if (f.stale) {
|
|
350
|
+
const age = f.ageDays === null ? "of unknown age" : `${f.ageDays} days old`;
|
|
351
|
+
parts.push(
|
|
352
|
+
`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.`
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
if (f.caveats.length > 0) {
|
|
356
|
+
parts.push(
|
|
357
|
+
`${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.`
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
console.warn(`[@broberg/ai-sdk] ${parts.join(" | ")}`);
|
|
361
|
+
}
|
|
362
|
+
function resetPricingWarningForTests() {
|
|
363
|
+
warned = false;
|
|
364
|
+
}
|
|
365
|
+
var VENDOR_ALIASES = {
|
|
366
|
+
mistral: ["mistral", "mistralai"],
|
|
367
|
+
google: ["google", "gemini", "vertex"],
|
|
368
|
+
gemini: ["google", "gemini", "vertex"],
|
|
369
|
+
openai: ["openai"],
|
|
370
|
+
anthropic: ["anthropic"],
|
|
371
|
+
deepseek: ["deepseek"],
|
|
372
|
+
meta: ["meta-llama", "meta"],
|
|
373
|
+
xai: ["x-ai", "xai"]
|
|
374
|
+
};
|
|
375
|
+
function cheapestModels(q) {
|
|
376
|
+
const vendor = q.vendor.trim().toLowerCase();
|
|
377
|
+
const kind = q.kind ?? "chat";
|
|
378
|
+
const prefixes = VENDOR_ALIASES[vendor] ?? [vendor];
|
|
379
|
+
const fresh = pricingFreshness(q.nowMs);
|
|
380
|
+
const matches = listModelPrices().filter((p) => {
|
|
381
|
+
const ofVendor = prefixes.includes(p.provider.toLowerCase()) || prefixes.some((v) => p.model.toLowerCase().startsWith(`${v}/`));
|
|
382
|
+
if (!ofVendor || p.kind !== kind) return false;
|
|
383
|
+
if (q.route && p.route !== q.route) return false;
|
|
384
|
+
if (q.region && p.region !== q.region) return false;
|
|
385
|
+
if (!q.includeBatch && p.batch) return false;
|
|
386
|
+
if (!q.includeGone && p.upstream === "gone") return false;
|
|
387
|
+
if (!q.includeFree && (p.model.endsWith(":free") || p.inputPer1M === 0 && p.outputPer1M === 0)) return false;
|
|
388
|
+
return true;
|
|
389
|
+
});
|
|
390
|
+
const rows = matches.map((p) => {
|
|
391
|
+
const caveats2 = [];
|
|
392
|
+
if (p.source === "inventory") caveats2.push("price from the OpenRouter catalogue (OpenRouter's rate), not the vendor's own price page");
|
|
393
|
+
if (p.upstream === "unknown") caveats2.push("not checked against the vendor's own model list");
|
|
394
|
+
if (/-latest$/.test(p.model)) caveats2.push("floating -latest alias: the vendor can move it to another model and price");
|
|
395
|
+
if (p.route === "openrouter") caveats2.push("via OpenRouter: OpenRouter picks the upstream host, so the region is NOT guaranteed (usage.region reports 'unknown')");
|
|
396
|
+
else if (p.region !== "eu") caveats2.push(`region ${p.region}: not for personal data`);
|
|
397
|
+
if (p.source === "curated" && !p.checkedAt) caveats2.push("curated price without a check date");
|
|
398
|
+
return {
|
|
399
|
+
model: p.model,
|
|
400
|
+
callAs: p.callAs,
|
|
401
|
+
route: p.route,
|
|
402
|
+
kind: p.kind,
|
|
403
|
+
region: p.region,
|
|
404
|
+
inputPer1M: p.inputPer1M,
|
|
405
|
+
outputPer1M: p.outputPer1M,
|
|
406
|
+
blendedPer1M: Number(((3 * p.inputPer1M + p.outputPer1M) / 4).toPrecision(12)),
|
|
407
|
+
source: p.source,
|
|
408
|
+
checkedAt: p.checkedAt,
|
|
409
|
+
upstream: p.upstream,
|
|
410
|
+
caveats: caveats2
|
|
411
|
+
};
|
|
412
|
+
});
|
|
413
|
+
rows.sort(
|
|
414
|
+
(a, b) => a.blendedPer1M - b.blendedPer1M || Number(/-latest$/.test(a.model)) - Number(/-latest$/.test(b.model)) || Number(a.route !== "direct") - Number(b.route !== "direct") || Number(a.upstream !== "listed") - Number(b.upstream !== "listed") || a.model.localeCompare(b.model)
|
|
415
|
+
);
|
|
416
|
+
const caveats = [];
|
|
417
|
+
if (fresh.stale) caveats.push(`price table is stale (checked ${fresh.checkedAt || "never"}, threshold ${fresh.thresholdDays} days)`);
|
|
418
|
+
if (rows.length === 0) caveats.push(`no ${kind} model priced for vendor "${q.vendor}" with these filters`);
|
|
419
|
+
if (q.route === "direct") caveats.push("direct route covers only models in our curated price table; the vendor may list cheaper ones we have not priced");
|
|
420
|
+
return {
|
|
421
|
+
vendor: q.vendor,
|
|
422
|
+
kind,
|
|
423
|
+
results: rows.slice(0, q.limit ?? 3),
|
|
424
|
+
matched: rows.length,
|
|
425
|
+
stale: fresh.stale,
|
|
426
|
+
checkedAt: fresh.checkedAt,
|
|
427
|
+
caveats
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export {
|
|
432
|
+
MEDIA_PRICING_CHECKED_AT,
|
|
433
|
+
MEDIA_PRICING,
|
|
434
|
+
DEFAULT_CLIP_SEC,
|
|
435
|
+
getMediaPrice,
|
|
436
|
+
classifyKind,
|
|
437
|
+
listMediaPrices,
|
|
438
|
+
getModelPrice,
|
|
439
|
+
listModelPrices,
|
|
440
|
+
findModelPrices,
|
|
441
|
+
priceCall,
|
|
442
|
+
pricingGeneratedAt,
|
|
443
|
+
PRICING_STALE_AFTER_DAYS,
|
|
444
|
+
pricingFreshness,
|
|
445
|
+
warnIfPricingStale,
|
|
446
|
+
resetPricingWarningForTests,
|
|
447
|
+
cheapestModels
|
|
448
|
+
};
|
|
449
|
+
//# sourceMappingURL=chunk-D53S242W.js.map
|