@broberg/ai-sdk 0.38.0 → 0.40.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-QUOZWQ7G.js → chunk-KXTCLLVF.js} +173 -15
- package/dist/chunk-KXTCLLVF.js.map +1 -0
- package/dist/index.d.ts +74 -5
- package/dist/index.js +138 -90
- package/dist/index.js.map +1 -1
- package/dist/pricing.d.ts +84 -4
- package/dist/pricing.js +9 -1
- package/package.json +2 -2
- package/dist/chunk-QUOZWQ7G.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cost/pricing.ts","../src/cost/media-pricing.ts","../src/catalogue/pricing-data.ts","../src/catalogue/pricing-api.ts"],"sourcesContent":["// Versioned per-(provider, model) pricing. F3.6 populates the table + adds tests\n// + MiniMax coverage. F3.1 ships the type + lookup with an empty table, so\n// computeCost returns 0 for every model until F3.6 lands (calls still complete).\nexport interface PricingEntry {\n /** USD per 1M input tokens. */\n inputPer1M: number;\n /** USD per 1M output tokens. */\n outputPer1M: number;\n /** USD per 1M cache-read tokens (falls back to input rate if unset). */\n cacheReadPer1M?: number;\n /** USD per 1M cache-write/creation tokens (falls back to input rate if unset). */\n cacheWritePer1M?: number;\n /** Pricing snapshot version (date or tag) so stale entries are detectable. */\n version: string;\n}\n\n// USD per 1M tokens. Anthropic cache multipliers follow the standard model:\n// cache-read ≈ 0.1× input, cache-write ≈ 1.25× input. Verified against the\n// pricing tables in cms (packages/cms-ai/src/providers) + trail (model-lab).\n// MiniMax M2.7 is an estimate pending confirmation against OpenRouter's live\n// price page — flagged in its version string.\nconst V = \"2026-06-02\";\n// Mistral prices come straight from mistral.ai/pricing (per Christian's CD report).\nconst MS = \"2026-06-04-mistral.ai\";\n\n/** Keyed `${provider}:${model}`. Exported so the catalogue-research job (F014)\n * can enumerate every priced entry and diff it against the live provider lists. */\nexport const PRICING: Record<string, PricingEntry> = {\n // Anthropic (direct API). DEFAULT_TIER_MAP: fast/cheap=haiku, smart/vision=sonnet, powerful=opus.\n // $1.00/$5.00 — Anthropic's published Haiku 4.5 rate, confirmed against the\n // claude-api skill's model table 2026-09-03. F048: this row said $0.80/$4.00 while\n // \"openrouter:anthropic/claude-haiku-4.5\" said $1.00/$5.00 — the SAME model at two\n // prices, and the shorter, likelier id carried the wrong one. A consumer pricing\n // 68M haiku tokens (upmetrics' real volume) was told 20% under.\n \"anthropic:claude-haiku-4-5\": {\n inputPer1M: 1.0,\n outputPer1M: 5.0,\n cacheReadPer1M: 0.1,\n cacheWritePer1M: 1.25,\n version: \"2026-09-03\",\n },\n \"anthropic:claude-sonnet-4-6\": {\n inputPer1M: 3.0,\n outputPer1M: 15.0,\n cacheReadPer1M: 0.3,\n cacheWritePer1M: 3.75,\n version: V,\n },\n // $5.00/$25.00 — Anthropic's published Opus 4.8 rate, confirmed against the\n // claude-api skill's model table 2026-09-03.\n //\n // FOUND BY THE CONTRADICTION GUARD ON ITS FIRST RUN, not by a report. This row said\n // $15.00/$75.00 while \"openrouter:anthropic/claude-opus-4.8\" said $5.00/$25.00 —\n // THREE TIMES too high, the opposite direction from the haiku error and a larger\n // multiple. Nobody had noticed, because both numbers looked like answers.\n \"anthropic:claude-opus-4-8\": {\n inputPer1M: 5.0,\n outputPer1M: 25.0,\n cacheReadPer1M: 0.5,\n cacheWritePer1M: 6.25,\n version: \"2026-09-03\",\n },\n\n // OpenAI. embedding default tier = text-embedding-3-small (no output tokens).\n // Cached input is 50% of the input rate — $1.25 vs $2.50 (gpt-4o) and $0.075 vs\n // $0.15 (gpt-4o-mini), read from developers.openai.com/api/docs/pricing on\n // 2026-08-27. NOTE IT IS 50%, NOT the 10% Mistral and Gemini charge: assuming one\n // uniform discount across providers would have understated OpenAI's cost by 4x on\n // the cached half. Caching is automatic above 1,024 tokens — no key, no opt-in.\n // The embedding models list NO cached price (embeddings do not cache), so they\n // deliberately get no row here rather than a guessed one.\n \"openai:text-embedding-3-small\": { inputPer1M: 0.02, outputPer1M: 0, version: V },\n \"openai:text-embedding-3-large\": { inputPer1M: 0.13, outputPer1M: 0, version: V },\n \"openai:gpt-4o\": { inputPer1M: 2.5, cacheReadPer1M: 1.25, outputPer1M: 10.0, version: \"2026-08-27-developers.openai.com\" },\n \"openai:gpt-4o-mini\": { inputPer1M: 0.15, cacheReadPer1M: 0.075, outputPer1M: 0.6, version: \"2026-08-27-developers.openai.com\" },\n // Whisper is priced per minute, not per token — not representable here; transcribe\n // (F5.6) computes its own cost. Listed as 0 so token-based compute never charges it.\n \"openai:whisper-1\": { inputPer1M: 0, outputPer1M: 0, version: V },\n\n // OpenRouter (meta-router — model slugs include the upstream vendor). Slugs use\n // dots (claude-sonnet-4.6) to match OpenRouter's live ids; the dashed forms\n // never matched a real call. Caught by the F014 catalogue research.\n \"openrouter:anthropic/claude-sonnet-4.6\": { inputPer1M: 3.0, outputPer1M: 15.0, version: V },\n // OpenRouter ground-truth $1/$5 — a markup over Anthropic-direct's $0.8/$4\n // (the `anthropic:` entry above). Was masked while the slug used dashes.\n \"openrouter:anthropic/claude-haiku-4.5\": { inputPer1M: 1.0, outputPer1M: 5.0, version: \"2026-06-04\" },\n \"openrouter:google/gemini-2.5-flash\": { inputPer1M: 0.3, outputPer1M: 2.5, version: V },\n // Ground-truth from OpenRouter /api/v1/models (was a 0.3 estimate; now 0.279).\n \"openrouter:minimax/minimax-m2.7\": {\n inputPer1M: 0.279,\n outputPer1M: 1.2,\n version: \"2026-06-04\",\n },\n // DeepSeek V4 (CN-hosted — NOT GDPR-safe; non-personal-data workloads only).\n // On 2026-05-22 DeepSeek made the \"75% off\" promo the permanent official price.\n // V4-Pro $0.435/$0.87 is ~34x cheaper than GPT-5.5 on output; flash is cheaper\n // still. Numbers match OpenRouter /api/v1/models 1:1 (no router markup). A strong\n // cheap route for fleet background work once `claude -p` is API-billed (15 Jun).\n \"openrouter:deepseek/deepseek-v4-pro\": { inputPer1M: 0.435, outputPer1M: 0.87, version: \"2026-05-22-deepseek-official\" },\n \"openrouter:deepseek/deepseek-v4-flash\": { inputPer1M: 0.0983, outputPer1M: 0.1966, version: \"2026-05-22-deepseek-official\" },\n // DeepSeek DIRECT API (provider \"deepseek\", F030 non-PII secondary). Rates from\n // api-docs.deepseek.com 2026-06-30 ($0.14/$0.28 per 1M; both map to deepseek-v4-flash).\n // `deepseek-chat` (non-thinking) + `deepseek-reasoner` (thinking) DEPRECATE 2026-07-24.\n // (The bare `deepseek-v4-flash` basename is already priced via the openrouter entry\n // above — kept distinct here to avoid a basename collision in the F027 pricing-API.)\n // Verify against a real key when it lands.\n \"deepseek:deepseek-chat\": { inputPer1M: 0.14, outputPer1M: 0.28, version: \"2026-06-30-deepseek-direct\" },\n \"deepseek:deepseek-reasoner\": { inputPer1M: 0.14, outputPer1M: 0.28, version: \"2026-06-30-deepseek-direct\" },\n\n // Cached input tokens cost 10% of the input rate — $0.03 vs $0.30 (2.5-flash) and\n // $0.01 vs $0.10 (2.5-flash-lite), read from ai.google.dev/gemini-api/docs/pricing\n // on 2026-08-27 rather than recalled. NB the storage fee on that page ($1/1M\n // tokens/hour) applies to EXPLICIT context caching, where you create a CachedContent\n // object with a TTL. We use IMPLICIT caching, which has no storage charge — so this\n // table is not silently under-billing.\n // Google Gemini (direct). Provider key is \"gemini\" — matches the adapter's\n // usage.provider + the override.provider callers pass. (Image-gen models are\n // priced per-image in the adapter, not here.)\n \"gemini:gemini-2.5-flash\": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 2.5, version: \"2026-08-27-ai.google.dev\" },\n // flash-lite is the default `video` tier (F019) — cheap native video understanding.\n \"gemini:gemini-2.5-flash-lite\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.4, version: \"2026-08-27-ai.google.dev\" },\n\n // Vertex AI (F038) — the EU-resident route to the SAME Gemini models, so Google's\n // published Gemini token prices apply. Listed separately because cost lookups key on\n // `provider:model`: without these rows an EU vision/video call would silently log\n // $0, which is worse than no tracking (a confident wrong number).\n \"vertex:gemini-2.5-flash\": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 2.5, version: \"2026-08-27-ai.google.dev\" },\n \"vertex:gemini-2.5-flash-lite\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.4, version: \"2026-08-27-ai.google.dev\" },\n\n // Cached prompt tokens bill at 10% of the input rate (F039, measured 2026-08-27:\n // an 8,810-token prefix reported 8,784 cached on the second call WITH a\n // prompt_cache_key, and 0 without one at every size up to 57k).\n // Mistral (direct, La Plateforme). Official prices from mistral.ai/pricing\n // (2026-06-04, per Christian's CD report). EU/Paris-hosted — the designated\n // GDPR-safe provider for client/personal-data workloads (see F015). NB:\n // medium-3.5 is the premium \"Vibe\" coding tier ($1.5/$7.5); Large 3 ($0.5/$1.5)\n // is the cheaper frontier general-purpose model despite the higher number.\n \"mistral:mistral-large-latest\": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },\n \"mistral:mistral-large-2512\": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },\n \"mistral:mistral-medium-latest\": { inputPer1M: 1.5, cacheReadPer1M: 0.15, outputPer1M: 7.5, version: MS },\n \"mistral:mistral-medium-3.5\": { inputPer1M: 1.5, cacheReadPer1M: 0.15, outputPer1M: 7.5, version: MS },\n \"mistral:mistral-medium-3\": { inputPer1M: 0.4, cacheReadPer1M: 0.04, outputPer1M: 2.0, version: \"2026-06-04-or-xref\" },\n \"mistral:mistral-small-latest\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.3, version: MS },\n \"mistral:mistral-small-2603\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.3, version: MS },\n \"mistral:ministral-3b-latest\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0.1, version: MS },\n \"mistral:ministral-8b-latest\": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0.15, version: MS },\n \"mistral:ministral-14b-latest\": { inputPer1M: 0.2, cacheReadPer1M: 0.02, outputPer1M: 0.2, version: MS },\n \"mistral:magistral-medium-latest\": { inputPer1M: 2.0, cacheReadPer1M: 0.2, outputPer1M: 5.0, version: MS },\n \"mistral:magistral-small-latest\": { inputPer1M: 0.5, cacheReadPer1M: 0.05, outputPer1M: 1.5, version: MS },\n \"mistral:devstral-latest\": { inputPer1M: 0.4, cacheReadPer1M: 0.04, outputPer1M: 2.0, version: MS },\n \"mistral:codestral-latest\": { inputPer1M: 0.3, cacheReadPer1M: 0.03, outputPer1M: 0.9, version: MS },\n \"mistral:open-mistral-nemo\": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0.15, version: MS },\n // Moderation (F016.4) — per input token; output 0. (OCR is per-page in the adapter.)\n \"mistral:mistral-moderation-latest\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0, version: MS },\n // Embeddings (F016.5) — per input token.\n \"mistral:mistral-embed\": { inputPer1M: 0.1, cacheReadPer1M: 0.01, outputPer1M: 0, version: MS },\n \"mistral:codestral-embed\": { inputPer1M: 0.15, cacheReadPer1M: 0.015, outputPer1M: 0, version: MS },\n // F048 — reported by upmetrics as an unknown model (6 calls). Official mistral.ai/pricing.\n \"mistral:pixtral-large-latest\": { inputPer1M: 2.0, cacheReadPer1M: 0.2, outputPer1M: 6.0, version: \"2026-09-03\" },\n};\n\n/** Strip a provider's dated snapshot suffix: \"claude-haiku-4-5-20251001\" → \"claude-haiku-4-5\".\n * Returns the input unchanged when there is no suffix.\n *\n * ONE definition, used by BOTH lookups. F012 taught this rule to `getPrice` — the\n * internal cost path — and the exported catalogue never learned it, so for two years\n * `usage.costUsd` priced a dated id correctly while `getModelPrice` returned undefined\n * for the same string. Found by upmetrics, who use the catalogue and not our internals:\n * 19,456 calls of `claude-haiku-4-5-20251001` looked like an unknown model. Fixing the\n * instance and not the class is the shape; a copy of this regex in the other lookup\n * would have been the same mistake a third time. */\nexport function stripDatedSuffix(model: string): string {\n return model.replace(/-\\d{8}$/, \"\");\n}\n\nexport function getPrice(provider: string, model: string): PricingEntry | undefined {\n const exact = PRICING[`${provider}:${model}`];\n if (exact) return exact;\n // A real paid call must never be logged as $0 (F012).\n const base = stripDatedSuffix(model);\n if (base !== model) return PRICING[`${provider}:${base}`];\n return undefined;\n}\n","// Per-SECOND and per-IMAGE prices (F050) — the media half of the price table.\n//\n// Why this file exists at all. Until F050 these numbers lived as four private\n// `const` tables inside four adapters (gemini, vertex, fal, bfl). super measured\n// the consequence against 0.38.0: `pricingFreshness()` answered `{stale:false}`\n// while the table it measures is `per_1m_tokens` on all 448 rows — so the API\n// built to catch price drift reported \"fresh\" about numbers it structurally could\n// not see, and `getModelPrice(\"veo-3.1-generate-preview\")` was `undefined`. From\n// a call site, \"covered and fresh\" and \"not covered at all\" looked identical.\n//\n// These prices are HAND-MAINTAINED and the monthly job cannot refresh them: the\n// vendors publish them on marketing pages, not in a catalogue API (OpenRouter,\n// which backs the token table, carries no video or image model). That is exactly\n// why `checkedAt` here is a date a HUMAN typed, and why it is a separate field\n// rather than inherited from the token snapshot — an inherited date would make an\n// un-revised number look freshly verified every time the token job ran.\n//\n// The numbers themselves are UNCHANGED by this move, on purpose (F050 non-goal):\n// Veo $0.40/s and Kling $0.07/s were independently confirmed by super on 0.38.0,\n// and a refactor that silently repriced a call would be a worse bug than the\n// blindness it fixes. A test pins them.\n\n/** A price that is not per-token.\n *\n * Six units, not the two F050 was carded for. The form-forbidding test found ten\n * MORE hand-written price constants than super's report named — speech billed per\n * 1000 characters, transcription per audio-minute, OCR per page, a flat LoRA\n * training fee, and two more per-image tables. Moving only the four that had been\n * noticed would have left `caveats` reporting \"covered\" while four other units sat\n * in four adapters' private constants: the same blindness, one unit along. */\nexport type MediaUnit = \"per_sec\" | \"per_image\" | \"per_1k_chars\" | \"per_min\" | \"per_page\" | \"per_training\";\n\nexport interface MediaPrice {\n unit: MediaUnit;\n /** USD per second (video) or per generated image. */\n usd: number;\n /** ISO date a HUMAN last checked this against the vendor's published price.\n * Not derived from the monthly token job — that job never sees these. */\n checkedAt: string;\n /** Where the number comes from, so the next person can re-check it. */\n source: string;\n}\n\n/** When a human last walked the whole media table against vendor pricing pages.\n *\n * ONE date for the table rather than trusting every row's own: a row added later\n * with a fresh date would otherwise pull the table's average forward while the\n * older rows sat unrevised. Freshness reads the OLDEST answer, and this is it. */\nexport const MEDIA_PRICING_CHECKED_AT = \"2026-09-05\";\n\n/** Veo per-second USD. Same model family and the same rates on the consumer\n * Gemini API and on Vertex — one object, registered under both providers, so a\n * correction cannot land on one route and miss the other. */\nconst VEO_PER_SEC: Record<string, { usd: number; source: string }> = {\n \"veo-3.1-generate-preview\": { usd: 0.4, source: \"ai.google.dev/gemini-api/docs/pricing — video with audio, 720p/1080p (4K = 0.60)\" },\n \"veo-3.1-fast-generate-preview\": { usd: 0.1, source: \"ai.google.dev/gemini-api/docs/pricing — 720p (1080p = 0.12, 4K = 0.30)\" },\n \"veo-3.1-lite-generate-preview\": { usd: 0.05, source: \"ai.google.dev/gemini-api/docs/pricing — 720p (1080p = 0.08)\" },\n \"veo-3.0-generate-001\": { usd: 0.4, source: \"ai.google.dev/gemini-api/docs/pricing\" },\n \"veo-3.0-fast-generate-001\": { usd: 0.1, source: \"ai.google.dev/gemini-api/docs/pricing\" },\n};\n\nconst veoRows = (provider: string): Record<string, MediaPrice> =>\n Object.fromEntries(\n Object.entries(VEO_PER_SEC).map(([model, v]) => [\n `${provider}:${model}`,\n { unit: \"per_sec\" as const, usd: v.usd, checkedAt: MEDIA_PRICING_CHECKED_AT, source: v.source },\n ]),\n );\n\n/** Every non-token price the SDK bills from, keyed `provider:model`. */\nexport const MEDIA_PRICING: Record<string, MediaPrice> = {\n ...veoRows(\"gemini\"),\n ...veoRows(\"vertex\"),\n\n // fal video — fal's OFFICIAL published per-second rate, not a guess. Kling 2.5\n // Turbo Pro i2v is the blessed FAL_KEY-only image→video route: $0.35 for the\n // first 5 s + $0.07/additional s = a flat $0.07/s at 1080p.\n \"fal:fal-ai/kling-video/v2.5-turbo/pro/image-to-video\": {\n unit: \"per_sec\",\n usd: 0.07,\n checkedAt: MEDIA_PRICING_CHECKED_AT,\n source: \"fal.ai/models/fal-ai/kling-video/v2.5-turbo/pro/image-to-video\",\n },\n\n // fal images — ESTIMATES. fal bills by megapixel and changes often; fal returns\n // no price with the result, so a call costed from these carries\n // `costBasis: \"estimated\"`. Override per call with config.pricePerImage.\n \"fal:fal-ai/flux/schnell\": { unit: \"per_image\", usd: 0.003, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai pricing — estimate, billed by megapixel\" },\n \"fal:fal-ai/flux/dev\": { unit: \"per_image\", usd: 0.025, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai pricing — estimate, billed by megapixel\" },\n \"fal:fal-ai/flux-lora\": { unit: \"per_image\", usd: 0.025, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai pricing — estimate, billed by megapixel\" },\n \"fal:fal-ai/flux-pro\": { unit: \"per_image\", usd: 0.05, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai pricing — estimate, billed by megapixel\" },\n \"fal:fal-ai/flux-pro/v1.1\": { unit: \"per_image\", usd: 0.04, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai pricing — estimate, billed by megapixel\" },\n\n // BFL — the fallback only. BFL RETURNS the real billed cost in credits, so a\n // normal call is `costBasis: \"reported\"` and never reads this row.\n \"bfl:flux-pro-1.1-ultra-finetuned\": {\n unit: \"per_image\",\n usd: 0.06,\n checkedAt: MEDIA_PRICING_CHECKED_AT,\n source: \"bfl.ai/pricing — estimate; used only when BFL omits the credit cost\",\n },\n\n // Gemini images — billed per image, not per token. Google's price RISES with\n // resolution; these are the common 1K/1024px default.\n \"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 — 'nano-banana', 1024px = 1290 tok\" },\n \"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 — 1K; 2K=0.101, 4K=0.151\" },\n \"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 — 1K; 2K=0.101, 4K=0.151\" },\n \"gemini:gemini-3-pro-image\": { unit: \"per_image\", usd: 0.134, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"ai.google.dev/gemini-api/docs/pricing — premium; 1K/2K=0.134, 4K=0.24\" },\n \"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 — premium; was mistakenly the flash price once\" },\n\n // OpenRouter images — the FALLBACK only. OpenRouter usually returns usage.cost.\n \"openrouter:recraft/recraft-v4.1\": { unit: \"per_image\", usd: 0.035, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"openrouter.ai/recraft/recraft-v4.1 — fallback when usage.cost is omitted\" },\n \"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 — fallback when usage.cost is omitted\" },\n\n // Speech OUT — billed per 1000 characters of input text.\n \"azure:tts\": { unit: \"per_1k_chars\", usd: 0.016, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"azure.microsoft.com/pricing — neural standard, $16/1M chars\" },\n \"elevenlabs:tts\": { unit: \"per_1k_chars\", usd: 0.15, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"elevenlabs.io/pricing — API overage approx $0.10-0.18/1k chars; ESTIMATE\" },\n\n // Translation — per 1000 characters. Free tier (\":fx\" key, within quota) is truly $0;\n // this rate only bites past the Pro allowance.\n \"deepl:translate\": { unit: \"per_1k_chars\", usd: 0.0217, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"deepl.com/pro-api — ESTIMATE, conflicting tier reports; verify before a budget decision\" },\n\n // Speech IN — billed per audio-minute.\n \"azure:stt\": { unit: \"per_min\", usd: 0.0167, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"azure.microsoft.com/pricing — standard STT, $1/audio-hour\" },\n \"openai:whisper-1\": { unit: \"per_min\", usd: 0.006, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"openai.com/api/pricing — Whisper\" },\n \"mistral:voxtral-mini-latest\": { unit: \"per_min\", usd: 0.002, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"mistral.ai/pricing — Voxtral\" },\n \"mistral:voxtral-mini-2507\": { unit: \"per_min\", usd: 0.002, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"mistral.ai/pricing — Voxtral\" },\n \"mistral:voxtral-mini-2602\": { unit: \"per_min\", usd: 0.002, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"mistral.ai/pricing — Voxtral\" },\n\n // OCR — per page.\n \"mistral:ocr\": { unit: \"per_page\", usd: 0.002, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"mistral.ai/pricing — OCR, $2/1000 pages\" },\n\n // A flat fee per training run, not per anything produced.\n \"fal:train\": { unit: \"per_training\", usd: 2.0, checkedAt: MEDIA_PRICING_CHECKED_AT, source: \"fal.ai/models/fal-ai/flux-lora-fast-training — approx $2, ESTIMATE\" },\n};\n\n/** Default clip length billed when the caller passes no `durationSec`.\n *\n * It is an ASSUMPTION, not a measurement — the provider does not tell us how long\n * the clip it returned actually is. Every cost derived from it is stamped\n * `costBasis: \"estimated\"` so a consumer (and upmetrics) can tell it apart from a\n * cost computed off a real duration. super reported using such a number as if it\n * were measured and passing it on to Christian; that is the damage this stamp\n * removes. */\nexport const DEFAULT_CLIP_SEC = 8;\n\n/** Look up a non-token price. Unknown → undefined (never a fabricated 0). */\nexport function getMediaPrice(provider: string, model: string): MediaPrice | undefined {\n return MEDIA_PRICING[`${provider}:${model}`];\n}\n\n/** Rows per unit, for the freshness API's coverage report. */\nexport function mediaUnitCounts(): Record<MediaUnit, number> {\n // Every unit listed explicitly, so one that loses its last row reports 0 rather\n // than vanishing from the object — an absent key is what a caller never notices.\n const counts: Record<MediaUnit, number> = {\n per_sec: 0,\n per_image: 0,\n per_1k_chars: 0,\n per_min: 0,\n per_page: 0,\n per_training: 0,\n };\n for (const p of Object.values(MEDIA_PRICING)) counts[p.unit]++;\n return counts;\n}\n","// GENERATED by scripts/gen-pricing.mjs from inventory.json — DO NOT EDIT.\n// Trimmed pricing projection bundled into the @broberg/ai-sdk/pricing subpath (F027).\n// Regenerated whenever inventory.json refreshes (monthly F014/F017.5 cron).\nexport interface ModelPriceRaw {\n provider: string; model: string; name: string;\n input: number; output: number; unit: string; region: string;\n}\nexport const PRICING_GENERATED_AT = \"2026-09-03T19:06:51.817Z\";\nexport const PRICING_CHECKED_AT = \"2026-09-03T19:06:58.096Z\";\nexport const PRICING_DATA: ModelPriceRaw[] = [{\"provider\":\"meta\",\"model\":\"meta/muse-spark-1.3-contributor\",\"name\":\"Meta: Muse Spark 1.3 Contributor\",\"input\":0.09999999999999999,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"meta\",\"model\":\"meta/muse-spark-1.3\",\"name\":\"Meta: Muse Spark 1.3\",\"input\":1.25,\"output\":4.25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.8-flash\",\"name\":\"Google: Gemini 3.8 Flash\",\"input\":0.75,\"output\":3.75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.8-flash:batch\",\"name\":\"Google: Gemini 3.8 Flash (batch)\",\"input\":0.375,\"output\":1.875,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-fable-5.1\",\"name\":\"Anthropic: Claude Fable 5.1\",\"input\":10,\"output\":50,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-fable-5.1:batch\",\"name\":\"Anthropic: Claude Fable 5.1 (batch)\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"inception\",\"model\":\"inception/mercury-2.5-preview\",\"name\":\"Inception: Mercury 2.5 Preview\",\"input\":0.04,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"ibm-granite\",\"model\":\"ibm-granite/granite-4.2-8b\",\"name\":\"IBM: Granite 4.2 8B\",\"input\":0.09999999999999999,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy4-preview\",\"name\":\"Tencent: Hy4 preview\",\"input\":0.834,\"output\":2.501,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"inclusionai\",\"model\":\"inclusionai/ling-3.0-flash-fin\",\"name\":\"Ling 3.0 Flash Fin\",\"input\":0.06,\"output\":0.18,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"inclusionai\",\"model\":\"inclusionai/ling-3.0-flash-fin:free\",\"name\":\"Ling 3.0 Flash Fin (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~z-ai\",\"model\":\"~z-ai/glm-flash-latest\",\"name\":\"Z.ai: GLM Flash Latest\",\"input\":0.075,\"output\":0.25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.8-flash\",\"name\":\"Qwen: Qwen3.8 Flash\",\"input\":0.15,\"output\":0.47,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.3-flash\",\"name\":\"Z.ai: GLM 5.3 Flash\",\"input\":0.075,\"output\":0.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.3-flash:batch\",\"name\":\"Z.ai: GLM 5.3 Flash (batch)\",\"input\":0.15,\"output\":0.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"meta\",\"model\":\"meta/muse-spark-1.2-contributor\",\"name\":\"Meta: Muse Spark 1.2 Contributor\",\"input\":0.09999999999999999,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-flash-vision-exp\",\"name\":\"DeepSeek: DeepSeek V4 Flash Vision Exp\",\"input\":0.22,\"output\":0.66,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy-mt2-1.8b\",\"name\":\"Tencent: Hy-MT2-1.8B\",\"input\":0.044,\"output\":0.17700000000000002,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy-mt2-30b-a3b\",\"name\":\"Tencent: Hy-MT2-30B-A3B\",\"input\":0.074,\"output\":0.295,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~z-ai\",\"model\":\"~z-ai/glm-latest\",\"name\":\"Z.ai: GLM Latest\",\"input\":1.1480000000000001,\"output\":3.608,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy-mt2-7b\",\"name\":\"Tencent: Hy-MT2-7B\",\"input\":0.074,\"output\":0.295,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.3\",\"name\":\"Z.ai: GLM 5.3\",\"input\":1.4,\"output\":4.4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.8-27b\",\"name\":\"Qwen: Qwen3.8 27B\",\"input\":0.42,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"dots-studio\",\"model\":\"dots-studio/dots-3-note-preview:free\",\"name\":\"Dots Studio: Dots3-Note Preview (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.7-flash\",\"name\":\"Google: Gemini 3.7 Flash\",\"input\":0.75,\"output\":3.75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.7-flash:batch\",\"name\":\"Google: Gemini 3.7 Flash (batch)\",\"input\":0.375,\"output\":1.875,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-2-1-turbo\",\"name\":\"ByteDance Seed: Seed 2.1 Turbo\",\"input\":0.5,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.8-2.4t-a95b\",\"name\":\"Qwen: Qwen3.8 2.4T A95B\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.8-2.4t-a95b:batch\",\"name\":\"Qwen: Qwen3.8 2.4T A95B (batch)\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-2.0-code\",\"name\":\"ByteDance Seed: Seed-2.0-Code\",\"input\":0.5,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-pro-0813\",\"name\":\"DeepSeek: DeepSeek V4 Pro 0813\",\"input\":0.66,\"output\":1.9800000000000002,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-pro-0813:batch\",\"name\":\"DeepSeek: DeepSeek V4 Pro 0813 (batch)\",\"input\":1.32,\"output\":3.9600000000000004,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-4.6\",\"name\":\"SpaceXAI: Grok 4.6\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"liquid\",\"model\":\"liquid/lfm-2.5-2.6b:free\",\"name\":\"LiquidAI: LFM2.5-2.6B (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3.5-lightning\",\"name\":\"NVIDIA: Nemotron 3.5 Lightning\",\"input\":0.08,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3.5-lightning:free\",\"name\":\"NVIDIA: Nemotron 3.5 Lightning (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"sakana\",\"model\":\"sakana/sakana-namazu\",\"name\":\"Sakana: Sakana Namazu\",\"input\":0.95,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"upstage\",\"model\":\"upstage/solar-pro4\",\"name\":\"Upstage: Solar Pro 4\",\"input\":0.03,\"output\":0.12,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"meta\",\"model\":\"meta/muse-glimmer-30b\",\"name\":\"Meta: Muse Glimmer 30B\",\"input\":0.3,\"output\":1.1,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"meta\",\"model\":\"meta/muse-glimmer-30b:batch\",\"name\":\"Meta: Muse Glimmer 30B (batch)\",\"input\":0.35,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"meta\",\"model\":\"meta/muse-spark-1.2\",\"name\":\"Meta: Muse Spark 1.2\",\"input\":1.25,\"output\":4.25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.8-max\",\"name\":\"Qwen: Qwen3.8 Max\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"~deepseek\",\"model\":\"~deepseek/deepseek-v4-flash-latest\",\"name\":\"DeepSeek V4 Flash Latest\",\"input\":0.049999999999999996,\"output\":0.16,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-flash-0731\",\"name\":\"DeepSeek: DeepSeek V4 Flash 0731\",\"input\":0.065,\"output\":0.18,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-flash-0731:batch\",\"name\":\"DeepSeek: DeepSeek V4 Flash 0731 (batch)\",\"input\":0.14,\"output\":0.28,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling-small\",\"name\":\"Thinking Machines: Inkling Small\",\"input\":0.44999999999999996,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling-small:batch\",\"name\":\"Thinking Machines: Inkling Small (batch)\",\"input\":0.5,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling-small:free\",\"name\":\"Thinking Machines: Inkling Small (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.7-flash\",\"name\":\"Qwen: Qwen3.7 Flash\",\"input\":0.03,\"output\":0.13,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-5\",\"name\":\"Claude Opus 5\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-5:batch\",\"name\":\"Claude Opus 5 (batch)\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"inclusionai\",\"model\":\"inclusionai/ling-3.0-flash\",\"name\":\"Ling-3.0-flash\",\"input\":0.020999999999999998,\"output\":0.063,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"poolside\",\"model\":\"poolside/laguna-s-2.1\",\"name\":\"Poolside: Laguna S 2.1\",\"input\":0.09,\"output\":0.18,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"poolside\",\"model\":\"poolside/laguna-s-2.1:free\",\"name\":\"Poolside: Laguna S 2.1 (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.6-flash\",\"name\":\"Google: Gemini 3.6 Flash\",\"input\":0.75,\"output\":3.75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.6-flash:batch\",\"name\":\"Google: Gemini 3.6 Flash (batch)\",\"input\":0.375,\"output\":1.875,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.5-flash-lite\",\"name\":\"Google: Gemini 3.5 Flash Lite\",\"input\":0.3,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.5-flash-lite:batch\",\"name\":\"Google: Gemini 3.5 Flash Lite (batch)\",\"input\":0.15,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meituan\",\"model\":\"meituan/longcat-2.0\",\"name\":\"Meituan: LongCat 2.0\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling\",\"name\":\"Thinking Machines: Inkling\",\"input\":1,\"output\":4.05,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling:batch\",\"name\":\"Thinking Machines: Inkling (batch)\",\"input\":1,\"output\":4.05,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"thinkingmachines\",\"model\":\"thinkingmachines/inkling:free\",\"name\":\"Thinking Machines: Inkling (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/auto-beta\",\"name\":\"Auto Router (Beta)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k3\",\"name\":\"MoonshotAI: Kimi K3\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k3:batch\",\"name\":\"MoonshotAI: Kimi K3 (batch)\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"meta\",\"model\":\"meta/muse-spark-1.1\",\"name\":\"Meta: Muse Spark 1.1\",\"input\":1.25,\"output\":4.25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"kwaipilot\",\"model\":\"kwaipilot/kat-coder-pro-v2.5\",\"name\":\"Kwaipilot: KAT-Coder-Pro V2.5\",\"input\":0.74,\"output\":2.96,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-luna-pro\",\"name\":\"OpenAI: GPT-5.6 Luna Pro\",\"input\":0.19999999999999998,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-luna-pro:batch\",\"name\":\"OpenAI: GPT-5.6 Luna Pro (batch)\",\"input\":0.09999999999999999,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-luna\",\"name\":\"OpenAI: GPT-5.6 Luna\",\"input\":0.19999999999999998,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-luna:batch\",\"name\":\"OpenAI: GPT-5.6 Luna (batch)\",\"input\":0.09999999999999999,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-terra-pro\",\"name\":\"OpenAI: GPT-5.6 Terra Pro\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-terra-pro:batch\",\"name\":\"OpenAI: GPT-5.6 Terra Pro (batch)\",\"input\":1,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-terra\",\"name\":\"OpenAI: GPT-5.6 Terra\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-terra:batch\",\"name\":\"OpenAI: GPT-5.6 Terra (batch)\",\"input\":1,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-sol-pro\",\"name\":\"OpenAI: GPT-5.6 Sol Pro\",\"input\":2,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-sol-pro:batch\",\"name\":\"OpenAI: GPT-5.6 Sol Pro (batch)\",\"input\":1,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-sol\",\"name\":\"OpenAI: GPT-5.6 Sol\",\"input\":2,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.6-sol:batch\",\"name\":\"OpenAI: GPT-5.6 Sol (batch)\",\"input\":1,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-4.5\",\"name\":\"SpaceXAI: Grok 4.5\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"~x-ai\",\"model\":\"~x-ai/grok-latest\",\"name\":\"xAI: Grok Latest\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"aion-labs\",\"model\":\"aion-labs/aion-3.0-mini\",\"name\":\"AionLabs: Aion-3.0-Mini\",\"input\":0.7,\"output\":1.4,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"aion-labs\",\"model\":\"aion-labs/aion-3.0\",\"name\":\"AionLabs: Aion-3.0\",\"input\":3,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy3\",\"name\":\"Tencent: Hy3\",\"input\":0.0825,\"output\":0.33,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"poolside\",\"model\":\"poolside/laguna-xs-2.1\",\"name\":\"Poolside: Laguna XS 2.1\",\"input\":0.06,\"output\":0.12,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"poolside\",\"model\":\"poolside/laguna-xs-2.1:free\",\"name\":\"Poolside: Laguna XS 2.1 (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-5\",\"name\":\"Anthropic: Claude Sonnet 5\",\"input\":2,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-5:batch\",\"name\":\"Anthropic: Claude Sonnet 5 (batch)\",\"input\":1,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-lite-image\",\"name\":\"Google: Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image)\",\"input\":0.25,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nex-agi\",\"model\":\"nex-agi/nex-n2-mini\",\"name\":\"Nex AGI: Nex-N2-Mini\",\"input\":0.024999999999999998,\"output\":0.09999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"sakana\",\"model\":\"sakana/fugu-ultra\",\"name\":\"Sakana: Fugu Ultra\",\"input\":5,\"output\":30,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-image\",\"name\":\"Google: Nano Banana 2 (Gemini 3.1 Flash Image)\",\"input\":0.5,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3-pro-image\",\"name\":\"Google: Nano Banana Pro (Gemini 3 Pro Image)\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"cohere\",\"model\":\"cohere/north-mini-code:free\",\"name\":\"Cohere: North Mini Code (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.2\",\"name\":\"Z.ai: GLM 5.2\",\"input\":0.966,\"output\":3.036,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.2:free\",\"name\":\"Z.ai: GLM 5.2 (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/fusion\",\"name\":\"OpenRouter: Fusion\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2.7-code\",\"name\":\"MoonshotAI: Kimi K2.7 Code\",\"input\":0.66,\"output\":3.4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"~anthropic\",\"model\":\"~anthropic/claude-fable-latest\",\"name\":\"Anthropic: Claude Fable Latest\",\"input\":10,\"output\":50,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-fable-5\",\"name\":\"Anthropic: Claude Fable 5\",\"input\":10,\"output\":50,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-fable-5:batch\",\"name\":\"Anthropic: Claude Fable 5 (batch)\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nex-agi\",\"model\":\"nex-agi/nex-n2-pro\",\"name\":\"Nex AGI: Nex-N2-Pro\",\"input\":0.25,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3.5-content-safety:free\",\"name\":\"NVIDIA: Nemotron 3.5 Content Safety (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-ultra-550b-a55b\",\"name\":\"NVIDIA: Nemotron 3 Ultra\",\"input\":0.6,\"output\":2.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-ultra-550b-a55b:free\",\"name\":\"NVIDIA: Nemotron 3 Ultra (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.7-plus\",\"name\":\"Qwen: Qwen3.7 Plus\",\"input\":0.32,\"output\":1.28,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m3\",\"name\":\"MiniMax: MiniMax M3\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m3:batch\",\"name\":\"MiniMax: MiniMax M3 (batch)\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m3:free\",\"name\":\"MiniMax: MiniMax M3 (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"stepfun\",\"model\":\"stepfun/step-3.7-flash\",\"name\":\"StepFun: Step 3.7 Flash\",\"input\":0.19999999999999998,\"output\":1.15,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.8\",\"name\":\"Anthropic: Claude Opus 4.8\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.8:batch\",\"name\":\"Anthropic: Claude Opus 4.8 (batch)\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.7-max\",\"name\":\"Qwen: Qwen3.7 Max\",\"input\":1.475,\"output\":4.425,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-build-0.1\",\"name\":\"SpaceXAI: Grok Build 0.1\",\"input\":1,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.5-flash\",\"name\":\"Google: Gemini 3.5 Flash\",\"input\":1.5,\"output\":9,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.5-flash:batch\",\"name\":\"Google: Gemini 3.5 Flash (batch)\",\"input\":0.75,\"output\":4.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"perceptron\",\"model\":\"perceptron/perceptron-mk1\",\"name\":\"Perceptron: Perceptron Mk1\",\"input\":0.15,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-lite\",\"name\":\"Google: Gemini 3.1 Flash Lite\",\"input\":0.25,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-lite:batch\",\"name\":\"Google: Gemini 3.1 Flash Lite (batch)\",\"input\":0.125,\"output\":0.75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-chat-latest\",\"name\":\"OpenAI: GPT Chat Latest\",\"input\":5,\"output\":30,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-4.3\",\"name\":\"SpaceXAI: Grok 4.3\",\"input\":1.25,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"ibm-granite\",\"model\":\"ibm-granite/granite-4.1-8b\",\"name\":\"IBM: Granite 4.1 8B\",\"input\":0.049999999999999996,\"output\":0.09999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-medium-3-5\",\"name\":\"Mistral: Mistral Medium 3.5\",\"input\":1.5,\"output\":7.5,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-medium-3-5:batch\",\"name\":\"Mistral: Mistral Medium 3.5 (batch)\",\"input\":0.75,\"output\":3.75,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\"name\":\"NVIDIA: Nemotron 3 Nano Omni (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"~anthropic\",\"model\":\"~anthropic/claude-haiku-latest\",\"name\":\"Anthropic Claude Haiku Latest\",\"input\":1,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~openai\",\"model\":\"~openai/gpt-mini-latest\",\"name\":\"OpenAI GPT Mini Latest\",\"input\":0.75,\"output\":4.5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~google\",\"model\":\"~google/gemini-pro-latest\",\"name\":\"Google Gemini Pro Latest\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~moonshotai\",\"model\":\"~moonshotai/kimi-latest\",\"name\":\"MoonshotAI Kimi Latest\",\"input\":2.5,\"output\":14,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~google\",\"model\":\"~google/gemini-flash-latest\",\"name\":\"Google Gemini Flash Latest\",\"input\":0.75,\"output\":3.75,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~anthropic\",\"model\":\"~anthropic/claude-sonnet-latest\",\"name\":\"Anthropic Claude Sonnet Latest\",\"input\":2,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"~openai\",\"model\":\"~openai/gpt-latest\",\"name\":\"OpenAI GPT Latest\",\"input\":2,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-plus-20260420\",\"name\":\"Qwen: Qwen3.5 Plus 2026-04-20\",\"input\":0.3,\"output\":1.7999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.6-flash\",\"name\":\"Qwen: Qwen3.6 Flash\",\"input\":0.1875,\"output\":1.125,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.6-35b-a3b\",\"name\":\"Qwen: Qwen3.6 35B A3B\",\"input\":0.09999999999999999,\"output\":0.8999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.6-max-preview\",\"name\":\"Qwen: Qwen3.6 Max Preview\",\"input\":1.0270000000000001,\"output\":6.162,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.6-27b\",\"name\":\"Qwen: Qwen3.6 27B\",\"input\":0.6,\"output\":3.5999999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.5-pro\",\"name\":\"OpenAI: GPT-5.5 Pro\",\"input\":30,\"output\":180,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.5-pro:batch\",\"name\":\"OpenAI: GPT-5.5 Pro (batch)\",\"input\":15,\"output\":90,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.5\",\"name\":\"OpenAI: GPT-5.5\",\"input\":5,\"output\":30,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.5:batch\",\"name\":\"OpenAI: GPT-5.5 (batch)\",\"input\":2.5,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-pro\",\"name\":\"DeepSeek: DeepSeek V4 Pro 0423\",\"input\":1.034256,\"output\":2.068512,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v4-flash\",\"name\":\"DeepSeek: DeepSeek V4 Flash 0423\",\"input\":0.08092,\"output\":0.16184,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"tencent\",\"model\":\"tencent/hy3-preview\",\"name\":\"Tencent: Hy3 preview\",\"input\":0.18,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"xiaomi\",\"model\":\"xiaomi/mimo-v2.5-pro\",\"name\":\"Xiaomi: MiMo-V2.5-Pro\",\"input\":0.435,\"output\":0.87,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"xiaomi\",\"model\":\"xiaomi/mimo-v2.5\",\"name\":\"Xiaomi: MiMo-V2.5\",\"input\":0.14,\"output\":0.28,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-image-2\",\"name\":\"OpenAI: GPT-5.4 Image 2\",\"input\":8,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"~anthropic\",\"model\":\"~anthropic/claude-opus-latest\",\"name\":\"Anthropic: Claude Opus Latest\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/pareto-code\",\"name\":\"Pareto Code Router\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2.6\",\"name\":\"MoonshotAI: Kimi K2.6\",\"input\":0.95,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.7\",\"name\":\"Anthropic: Claude Opus 4.7\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.7:batch\",\"name\":\"Anthropic: Claude Opus 4.7 (batch)\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5.1\",\"name\":\"Z.ai: GLM 5.1\",\"input\":0.966,\"output\":3.036,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"google\",\"model\":\"google/gemma-4-26b-a4b-it\",\"name\":\"Google: Gemma 4 26B A4B \",\"input\":0.07,\"output\":0.33999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-4-26b-a4b-it:free\",\"name\":\"Google: Gemma 4 26B A4B (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-4-31b-it\",\"name\":\"Google: Gemma 4 31B\",\"input\":0.09,\"output\":0.33999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-4-31b-it:batch\",\"name\":\"Google: Gemma 4 31B (batch)\",\"input\":0.39,\"output\":0.9700000000000001,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-4-31b-it:free\",\"name\":\"Google: Gemma 4 31B (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.6-plus\",\"name\":\"Qwen: Qwen3.6 Plus\",\"input\":0.325,\"output\":1.95,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5v-turbo\",\"name\":\"Z.ai: GLM 5V Turbo\",\"input\":1.2,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"arcee-ai\",\"model\":\"arcee-ai/trinity-large-thinking\",\"name\":\"Arcee AI: Trinity Large Thinking\",\"input\":0.25,\"output\":0.7999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-4.20-multi-agent\",\"name\":\"SpaceXAI: Grok 4.20 Multi-Agent\",\"input\":1.25,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"x-ai\",\"model\":\"x-ai/grok-4.20\",\"name\":\"SpaceXAI: Grok 4.20\",\"input\":1.25,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/lyria-3-pro-preview\",\"name\":\"Google: Lyria 3 Pro Preview\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/lyria-3-clip-preview\",\"name\":\"Google: Lyria 3 Clip Preview\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"kwaipilot\",\"model\":\"kwaipilot/kat-coder-pro-v2\",\"name\":\"Kwaipilot: KAT-Coder-Pro V2\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"rekaai\",\"model\":\"rekaai/reka-edge\",\"name\":\"Reka Edge\",\"input\":0.09999999999999999,\"output\":0.09999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2.7\",\"name\":\"MiniMax: MiniMax M2.7\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2.7:free\",\"name\":\"MiniMax: MiniMax M2.7 (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-nano\",\"name\":\"OpenAI: GPT-5.4 Nano\",\"input\":0.19999999999999998,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-nano:batch\",\"name\":\"OpenAI: GPT-5.4 Nano (batch)\",\"input\":0.09999999999999999,\"output\":0.625,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-mini\",\"name\":\"OpenAI: GPT-5.4 Mini\",\"input\":0.75,\"output\":4.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-mini:batch\",\"name\":\"OpenAI: GPT-5.4 Mini (batch)\",\"input\":0.375,\"output\":2.25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-small-2603\",\"name\":\"Mistral: Mistral Small 4\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5-turbo\",\"name\":\"Z.ai: GLM 5 Turbo\",\"input\":1.2,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-super-120b-a12b\",\"name\":\"NVIDIA: Nemotron 3 Super\",\"input\":0.08499999999999999,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-super-120b-a12b:free\",\"name\":\"NVIDIA: Nemotron 3 Super (free)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-2.0-lite\",\"name\":\"ByteDance Seed: Seed-2.0-Lite\",\"input\":0.25,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-9b\",\"name\":\"Qwen: Qwen3.5-9B\",\"input\":0.09999999999999999,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-9b:batch\",\"name\":\"Qwen: Qwen3.5-9B (batch)\",\"input\":0.16999999999999998,\"output\":0.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-pro\",\"name\":\"OpenAI: GPT-5.4 Pro\",\"input\":30,\"output\":180,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4-pro:batch\",\"name\":\"OpenAI: GPT-5.4 Pro (batch)\",\"input\":15,\"output\":90,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4\",\"name\":\"OpenAI: GPT-5.4\",\"input\":2.5,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.4:batch\",\"name\":\"OpenAI: GPT-5.4 (batch)\",\"input\":1.25,\"output\":7.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"inception\",\"model\":\"inception/mercury-2\",\"name\":\"Inception: Mercury 2\",\"input\":0.25,\"output\":0.75,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-lite-preview\",\"name\":\"Google: Gemini 3.1 Flash Lite Preview\",\"input\":0.25,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-2.0-mini\",\"name\":\"ByteDance Seed: Seed-2.0-Mini\",\"input\":0.09999999999999999,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-flash-image-preview\",\"name\":\"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)\",\"input\":0.5,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-35b-a3b\",\"name\":\"Qwen: Qwen3.5-35B-A3B\",\"input\":0.25,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-27b\",\"name\":\"Qwen: Qwen3.5-27B\",\"input\":0.195,\"output\":1.56,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-122b-a10b\",\"name\":\"Qwen: Qwen3.5-122B-A10B\",\"input\":0.29,\"output\":2.4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-flash-02-23\",\"name\":\"Qwen: Qwen3.5-Flash\",\"input\":0.065,\"output\":0.26,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-pro-preview-customtools\",\"name\":\"Google: Gemini 3.1 Pro Preview Custom Tools\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.3-codex\",\"name\":\"OpenAI: GPT-5.3-Codex\",\"input\":1.75,\"output\":14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"aion-labs\",\"model\":\"aion-labs/aion-2.0\",\"name\":\"AionLabs: Aion-2.0\",\"input\":0.7999999999999999,\"output\":1.5999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-pro-preview\",\"name\":\"Google: Gemini 3.1 Pro Preview\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3.1-pro-preview:batch\",\"name\":\"Google: Gemini 3.1 Pro Preview (batch)\",\"input\":1,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-4.6\",\"name\":\"Anthropic: Claude Sonnet 4.6\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-4.6:batch\",\"name\":\"Anthropic: Claude Sonnet 4.6 (batch)\",\"input\":1.5,\"output\":7.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-plus-02-15\",\"name\":\"Qwen: Qwen3.5 Plus 2026-02-15\",\"input\":0.26,\"output\":1.56,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3.5-397b-a17b\",\"name\":\"Qwen: Qwen3.5 397B A17B\",\"input\":0.55,\"output\":3.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2.5\",\"name\":\"MiniMax: MiniMax M2.5\",\"input\":0.27,\"output\":1.08,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-5\",\"name\":\"Z.ai: GLM 5\",\"input\":0.6,\"output\":1.92,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-max-thinking\",\"name\":\"Qwen: Qwen3 Max Thinking\",\"input\":0.78,\"output\":3.9,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.6\",\"name\":\"Anthropic: Claude Opus 4.6\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.6:batch\",\"name\":\"Anthropic: Claude Opus 4.6 (batch)\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-coder-next\",\"name\":\"Qwen: Qwen3 Coder Next\",\"input\":0.12,\"output\":0.7999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/free\",\"name\":\"Free Models Router\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"stepfun\",\"model\":\"stepfun/step-3.5-flash\",\"name\":\"StepFun: Step 3.5 Flash\",\"input\":0.09999999999999999,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2.5\",\"name\":\"MoonshotAI: Kimi K2.5\",\"input\":0.44999999999999996,\"output\":2.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"upstage\",\"model\":\"upstage/solar-pro-3\",\"name\":\"Upstage: Solar Pro 3\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2-her\",\"name\":\"MiniMax: MiniMax M2-her\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"writer\",\"model\":\"writer/palmyra-x5\",\"name\":\"Writer: Palmyra X5\",\"input\":0.6,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-audio\",\"name\":\"OpenAI: GPT Audio\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-audio-mini\",\"name\":\"OpenAI: GPT Audio Mini\",\"input\":0.6,\"output\":2.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.7-flash\",\"name\":\"Z.ai: GLM 4.7 Flash\",\"input\":0.06,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2-codex\",\"name\":\"OpenAI: GPT-5.2-Codex\",\"input\":1.75,\"output\":14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-1.6-flash\",\"name\":\"ByteDance Seed: Seed 1.6 Flash\",\"input\":0.075,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"bytedance-seed\",\"model\":\"bytedance-seed/seed-1.6\",\"name\":\"ByteDance Seed: Seed 1.6\",\"input\":0.25,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2.1\",\"name\":\"MiniMax: MiniMax M2.1\",\"input\":0.3,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.7\",\"name\":\"Z.ai: GLM 4.7\",\"input\":0.39999999999999997,\"output\":1.75,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"google\",\"model\":\"google/gemini-3-flash-preview\",\"name\":\"Google: Gemini 3 Flash Preview\",\"input\":0.5,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3-flash-preview:batch\",\"name\":\"Google: Gemini 3 Flash Preview (batch)\",\"input\":0.25,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"nvidia\",\"model\":\"nvidia/nemotron-3-nano-30b-a3b\",\"name\":\"NVIDIA: Nemotron 3 Nano 30B A3B\",\"input\":0.049999999999999996,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2-chat\",\"name\":\"OpenAI: GPT-5.2 Chat\",\"input\":1.75,\"output\":14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2-pro\",\"name\":\"OpenAI: GPT-5.2 Pro\",\"input\":21,\"output\":168,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2-pro:batch\",\"name\":\"OpenAI: GPT-5.2 Pro (batch)\",\"input\":10.5,\"output\":84,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2\",\"name\":\"OpenAI: GPT-5.2\",\"input\":1.75,\"output\":14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.2:batch\",\"name\":\"OpenAI: GPT-5.2 (batch)\",\"input\":0.875,\"output\":7,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/devstral-2512\",\"name\":\"Mistral: Devstral 2 2512\",\"input\":0.39999999999999997,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"relace\",\"model\":\"relace/relace-search\",\"name\":\"Relace: Relace Search\",\"input\":1,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.6v\",\"name\":\"Z.ai: GLM 4.6V\",\"input\":0.3,\"output\":0.8999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/bodybuilder\",\"name\":\"Body Builder (beta)\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.1-codex-max\",\"name\":\"OpenAI: GPT-5.1-Codex-Max\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"amazon\",\"model\":\"amazon/nova-2-lite-v1\",\"name\":\"Amazon: Nova 2 Lite\",\"input\":0.3,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/ministral-14b-2512\",\"name\":\"Mistral: Ministral 3 14B 2512\",\"input\":0.19999999999999998,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/ministral-8b-2512\",\"name\":\"Mistral: Ministral 3 8B 2512\",\"input\":0.15,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/ministral-3b-2512\",\"name\":\"Mistral: Ministral 3 3B 2512\",\"input\":0.09999999999999999,\"output\":0.09999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-large-2512\",\"name\":\"Mistral: Mistral Large 3 2512\",\"input\":0.5,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v3.2\",\"name\":\"DeepSeek: DeepSeek V3.2\",\"input\":0.26899999999999996,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.5\",\"name\":\"Anthropic: Claude Opus 4.5\",\"input\":5,\"output\":25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.5:batch\",\"name\":\"Anthropic: Claude Opus 4.5 (batch)\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-3-pro-image-preview\",\"name\":\"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)\",\"input\":2,\"output\":12,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.1\",\"name\":\"OpenAI: GPT-5.1\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.1:batch\",\"name\":\"OpenAI: GPT-5.1 (batch)\",\"input\":0.625,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.1-codex\",\"name\":\"OpenAI: GPT-5.1-Codex\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5.1-codex-mini\",\"name\":\"OpenAI: GPT-5.1-Codex-Mini\",\"input\":0.25,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2-thinking\",\"name\":\"MoonshotAI: Kimi K2 Thinking\",\"input\":0.6,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"amazon\",\"model\":\"amazon/nova-premier-v1\",\"name\":\"Amazon: Nova Premier 1.0\",\"input\":2.5,\"output\":12.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"perplexity\",\"model\":\"perplexity/sonar-pro-search\",\"name\":\"Perplexity: Sonar Pro Search\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/voxtral-small-24b-2507\",\"name\":\"Mistral: Voxtral Small 24B 2507\",\"input\":0.09999999999999999,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-oss-safeguard-20b\",\"name\":\"OpenAI: gpt-oss-safeguard-20b\",\"input\":0.075,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m2\",\"name\":\"MiniMax: MiniMax M2\",\"input\":0.255,\"output\":1.02,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-32b-instruct\",\"name\":\"Qwen: Qwen3 VL 32B Instruct\",\"input\":0.10400000000000001,\"output\":0.41600000000000004,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"ibm-granite\",\"model\":\"ibm-granite/granite-4.0-h-micro\",\"name\":\"IBM: Granite 4.0 Micro\",\"input\":0.017,\"output\":0.112,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-image-mini\",\"name\":\"OpenAI: GPT-5 Image Mini\",\"input\":2.5,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-haiku-4.5\",\"name\":\"Anthropic: Claude Haiku 4.5\",\"input\":1,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-haiku-4.5:batch\",\"name\":\"Anthropic: Claude Haiku 4.5 (batch)\",\"input\":0.5,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-8b-thinking\",\"name\":\"Qwen: Qwen3 VL 8B Thinking\",\"input\":0.18,\"output\":2.0999999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-8b-instruct\",\"name\":\"Qwen: Qwen3 VL 8B Instruct\",\"input\":0.117,\"output\":0.45499999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-image\",\"name\":\"OpenAI: GPT-5 Image\",\"input\":10,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-flash-image\",\"name\":\"Google: Nano Banana (Gemini 2.5 Flash Image)\",\"input\":0.3,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-30b-a3b-thinking\",\"name\":\"Qwen: Qwen3 VL 30B A3B Thinking\",\"input\":0.19999999999999998,\"output\":2.4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-30b-a3b-instruct\",\"name\":\"Qwen: Qwen3 VL 30B A3B Instruct\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-pro\",\"name\":\"OpenAI: GPT-5 Pro\",\"input\":15,\"output\":120,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-pro:batch\",\"name\":\"OpenAI: GPT-5 Pro (batch)\",\"input\":7.5,\"output\":60,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.6\",\"name\":\"Z.ai: GLM 4.6\",\"input\":0.55,\"output\":2.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-4.5\",\"name\":\"Anthropic: Claude Sonnet 4.5\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-4.5:batch\",\"name\":\"Anthropic: Claude Sonnet 4.5 (batch)\",\"input\":1.5,\"output\":7.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v3.2-exp\",\"name\":\"DeepSeek: DeepSeek V3.2 Exp\",\"input\":0.27,\"output\":0.41,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"thedrummer\",\"model\":\"thedrummer/cydonia-24b-v4.1\",\"name\":\"TheDrummer: Cydonia 24B V4.1\",\"input\":0.3,\"output\":0.5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"relace\",\"model\":\"relace/relace-apply-3\",\"name\":\"Relace: Relace Apply 3\",\"input\":0.85,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-235b-a22b-thinking\",\"name\":\"Qwen: Qwen3 VL 235B A22B Thinking\",\"input\":0.39999999999999997,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-vl-235b-a22b-instruct\",\"name\":\"Qwen: Qwen3 VL 235B A22B Instruct\",\"input\":0.21,\"output\":1.9,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-max\",\"name\":\"Qwen: Qwen3 Max\",\"input\":0.78,\"output\":3.9,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-coder-plus\",\"name\":\"Qwen: Qwen3 Coder Plus\",\"input\":0.65,\"output\":3.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-v3.1-terminus\",\"name\":\"DeepSeek: DeepSeek V3.1 Terminus\",\"input\":0.27,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-coder-flash\",\"name\":\"Qwen: Qwen3 Coder Flash\",\"input\":0.195,\"output\":0.975,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-next-80b-a3b-thinking\",\"name\":\"Qwen: Qwen3 Next 80B A3B Thinking\",\"input\":0.15,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-next-80b-a3b-instruct\",\"name\":\"Qwen: Qwen3 Next 80B A3B Instruct\",\"input\":0.09999999999999999,\"output\":1.1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen-plus-2025-07-28\",\"name\":\"Qwen: Qwen Plus 0728\",\"input\":0.26,\"output\":0.78,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2-0905\",\"name\":\"MoonshotAI: Kimi K2 0905\",\"input\":0.6,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"name\":\"Qwen: Qwen3 30B A3B Thinking 2507\",\"input\":0.19999999999999998,\"output\":2.4,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"nousresearch\",\"model\":\"nousresearch/hermes-4-70b\",\"name\":\"Nous: Hermes 4 70B\",\"input\":0.13,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"nousresearch\",\"model\":\"nousresearch/hermes-4-405b\",\"name\":\"Nous: Hermes 4 405B\",\"input\":1,\"output\":3,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-chat-v3.1\",\"name\":\"DeepSeek: DeepSeek V3.1\",\"input\":0.55,\"output\":1.6500000000000001,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-medium-3.1\",\"name\":\"Mistral: Mistral Medium 3.1\",\"input\":0.39999999999999997,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.5v\",\"name\":\"Z.ai: GLM 4.5V\",\"input\":0.6,\"output\":1.7999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5\",\"name\":\"OpenAI: GPT-5\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5:batch\",\"name\":\"OpenAI: GPT-5 (batch)\",\"input\":0.625,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-mini\",\"name\":\"OpenAI: GPT-5 Mini\",\"input\":0.25,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-mini:batch\",\"name\":\"OpenAI: GPT-5 Mini (batch)\",\"input\":0.125,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-nano\",\"name\":\"OpenAI: GPT-5 Nano\",\"input\":0.049999999999999996,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-5-nano:batch\",\"name\":\"OpenAI: GPT-5 Nano (batch)\",\"input\":0.024999999999999998,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-oss-120b\",\"name\":\"OpenAI: gpt-oss-120b\",\"input\":0.037,\"output\":0.16999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-oss-120b:batch\",\"name\":\"OpenAI: gpt-oss-120b (batch)\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-oss-20b\",\"name\":\"OpenAI: gpt-oss-20b\",\"input\":0.03,\"output\":0.13,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-oss-20b:batch\",\"name\":\"OpenAI: gpt-oss-20b (batch)\",\"input\":0.049999999999999996,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.1\",\"name\":\"Anthropic: Claude Opus 4.1\",\"input\":15,\"output\":75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4.1:batch\",\"name\":\"Anthropic: Claude Opus 4.1 (batch)\",\"input\":7.5,\"output\":37.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/codestral-2508\",\"name\":\"Mistral: Codestral 2508\",\"input\":0.3,\"output\":0.8999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-coder-30b-a3b-instruct\",\"name\":\"Qwen: Qwen3 Coder 30B A3B Instruct\",\"input\":0.07,\"output\":0.28,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-30b-a3b-instruct-2507\",\"name\":\"Qwen: Qwen3 30B A3B Instruct 2507\",\"input\":0.04815,\"output\":0.19305,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.5\",\"name\":\"Z.ai: GLM 4.5\",\"input\":0.6,\"output\":2.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"z-ai\",\"model\":\"z-ai/glm-4.5-air\",\"name\":\"Z.ai: GLM 4.5 Air\",\"input\":0.13,\"output\":0.85,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-235b-a22b-thinking-2507\",\"name\":\"Qwen: Qwen3 235B A22B Thinking 2507\",\"input\":0.22999999999999998,\"output\":2.3,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-coder\",\"name\":\"Qwen: Qwen3 Coder 480B A35B\",\"input\":0.3,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"bytedance\",\"model\":\"bytedance/ui-tars-1.5-7b\",\"name\":\"ByteDance: UI-TARS 7B \",\"input\":0.09999999999999999,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-flash-lite\",\"name\":\"Google: Gemini 2.5 Flash Lite\",\"input\":0.09999999999999999,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-flash-lite:batch\",\"name\":\"Google: Gemini 2.5 Flash Lite (batch)\",\"input\":0.049999999999999996,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-235b-a22b-2507\",\"name\":\"Qwen: Qwen3 235B A22B Instruct 2507\",\"input\":0.0875,\"output\":0.35,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"moonshotai\",\"model\":\"moonshotai/kimi-k2\",\"name\":\"MoonshotAI: Kimi K2 0711\",\"input\":0.5700000000000001,\"output\":2.3,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"cognitivecomputations\",\"model\":\"cognitivecomputations/dolphin-mistral-24b-venice-edition\",\"name\":\"Venice: Uncensored\",\"input\":0.19999999999999998,\"output\":0.8999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"tencent\",\"model\":\"tencent/hunyuan-a13b-instruct\",\"name\":\"Tencent: Hunyuan A13B Instruct\",\"input\":0.14,\"output\":0.5700000000000001,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"morph\",\"model\":\"morph/morph-v3-large\",\"name\":\"Morph: Morph V3 Large\",\"input\":0.8999999999999999,\"output\":1.9,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"morph\",\"model\":\"morph/morph-v3-fast\",\"name\":\"Morph: Morph V3 Fast\",\"input\":0.7999999999999999,\"output\":1.2,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"baidu\",\"model\":\"baidu/ernie-4.5-vl-424b-a47b\",\"name\":\"Baidu: ERNIE 4.5 VL 424B A47B \",\"input\":0.42,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-small-3.2-24b-instruct\",\"name\":\"Mistral: Mistral Small 3.2 24B\",\"input\":0.075,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-m1\",\"name\":\"MiniMax: MiniMax M1\",\"input\":0.55,\"output\":2.2,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-flash\",\"name\":\"Google: Gemini 2.5 Flash\",\"input\":0.3,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-flash:batch\",\"name\":\"Google: Gemini 2.5 Flash (batch)\",\"input\":0.15,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-pro\",\"name\":\"Google: Gemini 2.5 Pro\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-pro:batch\",\"name\":\"Google: Gemini 2.5 Pro (batch)\",\"input\":0.625,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o3-pro\",\"name\":\"OpenAI: o3 Pro\",\"input\":20,\"output\":80,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-pro-preview\",\"name\":\"Google: Gemini 2.5 Pro Preview 06-05\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-r1-0528\",\"name\":\"DeepSeek: R1 0528\",\"input\":0.5,\"output\":2.1500000000000004,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-opus-4\",\"name\":\"Anthropic: Claude Opus 4\",\"input\":15,\"output\":75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-sonnet-4\",\"name\":\"Anthropic: Claude Sonnet 4\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-medium-3\",\"name\":\"Mistral: Mistral Medium 3\",\"input\":0.39999999999999997,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"google\",\"model\":\"google/gemini-2.5-pro-preview-05-06\",\"name\":\"Google: Gemini 2.5 Pro Preview 05-06\",\"input\":1.25,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-guard-4-12b\",\"name\":\"Meta: Llama Guard 4 12B\",\"input\":0.18,\"output\":0.18,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-30b-a3b\",\"name\":\"Qwen: Qwen3 30B A3B\",\"input\":0.12,\"output\":0.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-8b\",\"name\":\"Qwen: Qwen3 8B\",\"input\":0.117,\"output\":0.45499999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-14b\",\"name\":\"Qwen: Qwen3 14B\",\"input\":0.12,\"output\":0.24,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-32b\",\"name\":\"Qwen: Qwen3 32B\",\"input\":0.08,\"output\":0.28,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen3-235b-a22b\",\"name\":\"Qwen: Qwen3 235B A22B\",\"input\":0.45499999999999996,\"output\":1.8199999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/o4-mini-high\",\"name\":\"OpenAI: o4 Mini High\",\"input\":1.1,\"output\":4.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o3\",\"name\":\"OpenAI: o3\",\"input\":2,\"output\":8,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o3:batch\",\"name\":\"OpenAI: o3 (batch)\",\"input\":1,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o4-mini\",\"name\":\"OpenAI: o4 Mini\",\"input\":1.1,\"output\":4.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o4-mini:batch\",\"name\":\"OpenAI: o4 Mini (batch)\",\"input\":0.55,\"output\":2.2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1\",\"name\":\"OpenAI: GPT-4.1\",\"input\":2,\"output\":8,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1:batch\",\"name\":\"OpenAI: GPT-4.1 (batch)\",\"input\":1,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1-mini\",\"name\":\"OpenAI: GPT-4.1 Mini\",\"input\":0.39999999999999997,\"output\":1.5999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1-mini:batch\",\"name\":\"OpenAI: GPT-4.1 Mini (batch)\",\"input\":0.19999999999999998,\"output\":0.7999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1-nano\",\"name\":\"OpenAI: GPT-4.1 Nano\",\"input\":0.09999999999999999,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4.1-nano:batch\",\"name\":\"OpenAI: GPT-4.1 Nano (batch)\",\"input\":0.049999999999999996,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-4-maverick\",\"name\":\"Meta: Llama 4 Maverick\",\"input\":0.19999999999999998,\"output\":0.696,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-4-scout\",\"name\":\"Meta: Llama 4 Scout\",\"input\":0.09999999999999999,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-chat-v3-0324\",\"name\":\"DeepSeek: DeepSeek V3 0324\",\"input\":0.25,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/o1-pro\",\"name\":\"OpenAI: o1-pro\",\"input\":150,\"output\":600,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-small-3.1-24b-instruct\",\"name\":\"Mistral: Mistral Small 3.1 24B\",\"input\":0.351,\"output\":0.5549999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"google\",\"model\":\"google/gemma-3-4b-it\",\"name\":\"Google: Gemma 3 4B\",\"input\":0.049999999999999996,\"output\":0.09999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-3-12b-it\",\"name\":\"Google: Gemma 3 12B\",\"input\":0.049999999999999996,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"cohere\",\"model\":\"cohere/command-a\",\"name\":\"Cohere: Command A\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"rekaai\",\"model\":\"rekaai/reka-flash-3\",\"name\":\"Reka Flash 3\",\"input\":0.09999999999999999,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"google\",\"model\":\"google/gemma-3-27b-it\",\"name\":\"Google: Gemma 3 27B\",\"input\":0.08,\"output\":0.44999999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"thedrummer\",\"model\":\"thedrummer/skyfall-36b-v2\",\"name\":\"TheDrummer: Skyfall 36B V2\",\"input\":0.55,\"output\":0.7999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"perplexity\",\"model\":\"perplexity/sonar-reasoning-pro\",\"name\":\"Perplexity: Sonar Reasoning Pro\",\"input\":2,\"output\":8,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"perplexity\",\"model\":\"perplexity/sonar-pro\",\"name\":\"Perplexity: Sonar Pro\",\"input\":3,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"perplexity\",\"model\":\"perplexity/sonar-deep-research\",\"name\":\"Perplexity: Sonar Deep Research\",\"input\":2,\"output\":8,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-saba\",\"name\":\"Mistral: Saba\",\"input\":0.19999999999999998,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"openai\",\"model\":\"openai/o3-mini-high\",\"name\":\"OpenAI: o3 Mini High\",\"input\":1.1,\"output\":4.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"aion-labs\",\"model\":\"aion-labs/aion-rp-llama-3.1-8b\",\"name\":\"AionLabs: Aion-RP 1.0 (8B)\",\"input\":0.7999999999999999,\"output\":1.5999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen2.5-vl-72b-instruct\",\"name\":\"Qwen: Qwen2.5 VL 72B Instruct\",\"input\":0.7999999999999999,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen-plus\",\"name\":\"Qwen: Qwen-Plus\",\"input\":0.26,\"output\":0.78,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"openai\",\"model\":\"openai/o3-mini\",\"name\":\"OpenAI: o3 Mini\",\"input\":1.1,\"output\":4.4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/o3-mini:batch\",\"name\":\"OpenAI: o3 Mini (batch)\",\"input\":0.55,\"output\":2.2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-small-24b-instruct-2501\",\"name\":\"Mistral: Mistral Small 3\",\"input\":0.049999999999999996,\"output\":0.08,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"perplexity\",\"model\":\"perplexity/sonar\",\"name\":\"Perplexity: Sonar\",\"input\":1,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-r1-distill-llama-70b\",\"name\":\"DeepSeek: R1 Distill Llama 70B\",\"input\":0.7999999999999999,\"output\":0.7999999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-r1\",\"name\":\"DeepSeek: R1\",\"input\":0.7,\"output\":2.5,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"minimax\",\"model\":\"minimax/minimax-01\",\"name\":\"MiniMax: MiniMax-01\",\"input\":0.19999999999999998,\"output\":1.1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"microsoft\",\"model\":\"microsoft/phi-4\",\"name\":\"Microsoft: Phi 4\",\"input\":0.07,\"output\":0.14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"deepseek\",\"model\":\"deepseek/deepseek-chat\",\"name\":\"DeepSeek: DeepSeek V3\",\"input\":0.32,\"output\":0.8899999999999999,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"sao10k\",\"model\":\"sao10k/l3.3-euryale-70b\",\"name\":\"Sao10K: Llama 3.3 Euryale 70B\",\"input\":0.65,\"output\":0.75,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/o1\",\"name\":\"OpenAI: o1\",\"input\":15,\"output\":60,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"cohere\",\"model\":\"cohere/command-r7b-12-2024\",\"name\":\"Cohere: Command R7B (12-2024)\",\"input\":0.0375,\"output\":0.15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-3.3-70b-instruct\",\"name\":\"Meta: Llama 3.3 70B Instruct\",\"input\":0.09999999999999999,\"output\":0.32,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"amazon\",\"model\":\"amazon/nova-lite-v1\",\"name\":\"Amazon: Nova Lite 1.0\",\"input\":0.06,\"output\":0.24,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"amazon\",\"model\":\"amazon/nova-micro-v1\",\"name\":\"Amazon: Nova Micro 1.0\",\"input\":0.035,\"output\":0.14,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"amazon\",\"model\":\"amazon/nova-pro-v1\",\"name\":\"Amazon: Nova Pro 1.0\",\"input\":0.7999999999999999,\"output\":3.1999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-2024-11-20\",\"name\":\"OpenAI: GPT-4o (2024-11-20)\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-large-2407\",\"name\":\"Mistral Large 2407\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen-2.5-coder-32b-instruct\",\"name\":\"Qwen2.5 Coder 32B Instruct\",\"input\":0.66,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"thedrummer\",\"model\":\"thedrummer/unslopnemo-12b\",\"name\":\"TheDrummer: UnslopNemo 12B\",\"input\":0.39999999999999997,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"anthracite-org\",\"model\":\"anthracite-org/magnum-v4-72b\",\"name\":\"Magnum v4 72B\",\"input\":2.5,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen-2.5-7b-instruct\",\"name\":\"Qwen: Qwen2.5 7B Instruct\",\"input\":0.09999999999999999,\"output\":0.19999999999999998,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-3.2-1b-instruct\",\"name\":\"Meta: Llama 3.2 1B Instruct\",\"input\":0.027,\"output\":0.201,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-3.2-3b-instruct\",\"name\":\"Meta: Llama 3.2 3B Instruct\",\"input\":0.049999999999999996,\"output\":0.33,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"qwen\",\"model\":\"qwen/qwen-2.5-72b-instruct\",\"name\":\"Qwen2.5 72B Instruct\",\"input\":0.36,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"cn\"},{\"provider\":\"cohere\",\"model\":\"cohere/command-r-08-2024\",\"name\":\"Cohere: Command R (08-2024)\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"cohere\",\"model\":\"cohere/command-r-plus-08-2024\",\"name\":\"Cohere: Command R+ (08-2024)\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"sao10k\",\"model\":\"sao10k/l3.1-euryale-70b\",\"name\":\"Sao10K: Llama 3.1 Euryale 70B v2.2\",\"input\":0.85,\"output\":0.85,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"nousresearch\",\"model\":\"nousresearch/hermes-3-llama-3.1-70b\",\"name\":\"Nous: Hermes 3 70B Instruct\",\"input\":0.7,\"output\":0.7,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"nousresearch\",\"model\":\"nousresearch/hermes-3-llama-3.1-405b\",\"name\":\"Nous: Hermes 3 405B Instruct\",\"input\":1,\"output\":1,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"sao10k\",\"model\":\"sao10k/l3-lunaris-8b\",\"name\":\"Sao10K: Llama 3 8B Lunaris\",\"input\":0.04,\"output\":0.049999999999999996,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-2024-08-06\",\"name\":\"OpenAI: GPT-4o (2024-08-06)\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-3.1-70b-instruct\",\"name\":\"Meta: Llama 3.1 70B Instruct\",\"input\":0.39999999999999997,\"output\":0.39999999999999997,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"meta-llama\",\"model\":\"meta-llama/llama-3.1-8b-instruct\",\"name\":\"Meta: Llama 3.1 8B Instruct\",\"input\":0.049999999999999996,\"output\":0.08,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-nemo\",\"name\":\"Mistral: Mistral Nemo\",\"input\":0.019000000000000003,\"output\":0.03,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-mini\",\"name\":\"OpenAI: GPT-4o-mini\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-mini-2024-07-18\",\"name\":\"OpenAI: GPT-4o-mini (2024-07-18)\",\"input\":0.15,\"output\":0.6,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-mini:batch\",\"name\":\"OpenAI: GPT-4o-mini (batch)\",\"input\":0.075,\"output\":0.3,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"google\",\"model\":\"google/gemma-2-27b-it\",\"name\":\"Google: Gemma 2 27B\",\"input\":0.65,\"output\":0.65,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o\",\"name\":\"OpenAI: GPT-4o\",\"input\":2.5,\"output\":10,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o-2024-05-13\",\"name\":\"OpenAI: GPT-4o (2024-05-13)\",\"input\":5,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4o:batch\",\"name\":\"OpenAI: GPT-4o (batch)\",\"input\":1.25,\"output\":5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mixtral-8x22b-instruct\",\"name\":\"Mistral: Mixtral 8x22B Instruct\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"microsoft\",\"model\":\"microsoft/wizardlm-2-8x22b\",\"name\":\"WizardLM-2 8x22B\",\"input\":0.62,\"output\":0.62,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4-turbo\",\"name\":\"OpenAI: GPT-4 Turbo\",\"input\":10,\"output\":30,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4-turbo:batch\",\"name\":\"OpenAI: GPT-4 Turbo (batch)\",\"input\":5,\"output\":15,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"anthropic\",\"model\":\"anthropic/claude-3-haiku\",\"name\":\"Anthropic: Claude 3 Haiku\",\"input\":0.25,\"output\":1.25,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mistralai\",\"model\":\"mistralai/mistral-large\",\"name\":\"Mistral Large\",\"input\":2,\"output\":6,\"unit\":\"per_1m_tokens\",\"region\":\"eu\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-3.5-turbo-0613\",\"name\":\"OpenAI: GPT-3.5 Turbo (older v0613)\",\"input\":1,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4-turbo-preview\",\"name\":\"OpenAI: GPT-4 Turbo Preview\",\"input\":10,\"output\":30,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openrouter\",\"model\":\"openrouter/auto\",\"name\":\"Auto Router\",\"input\":0,\"output\":0,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-3.5-turbo-instruct\",\"name\":\"OpenAI: GPT-3.5 Turbo Instruct\",\"input\":1.5,\"output\":2,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-3.5-turbo-16k\",\"name\":\"OpenAI: GPT-3.5 Turbo 16k\",\"input\":3,\"output\":4,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"mancer\",\"model\":\"mancer/weaver\",\"name\":\"Mancer: Weaver (alpha)\",\"input\":0.39999999999999997,\"output\":0.75,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"undi95\",\"model\":\"undi95/remm-slerp-l2-13b\",\"name\":\"ReMM SLERP 13B\",\"input\":0.44999999999999996,\"output\":0.65,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"gryphe\",\"model\":\"gryphe/mythomax-l2-13b\",\"name\":\"MythoMax 13B\",\"input\":0.06,\"output\":0.06,\"unit\":\"per_1m_tokens\",\"region\":\"other\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-3.5-turbo\",\"name\":\"OpenAI: GPT-3.5 Turbo\",\"input\":0.5,\"output\":1.5,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-3.5-turbo:batch\",\"name\":\"OpenAI: GPT-3.5 Turbo (batch)\",\"input\":0.25,\"output\":0.75,\"unit\":\"per_1m_tokens\",\"region\":\"us\"},{\"provider\":\"openai\",\"model\":\"openai/gpt-4\",\"name\":\"OpenAI: GPT-4\",\"input\":30,\"output\":60,\"unit\":\"per_1m_tokens\",\"region\":\"us\"}];\n","// AI Pricing API (F027) — exact prices for ALL inventory models, callable from the\n// installed npm package (no fs, no bun:sqlite → bundles on an edge/browser build).\n// Backed by the bundled PRICING_DATA (trimmed inventory.json projection) with the\n// curated PRICING table (authoritative routed-provider numbers) overlaid on top.\nimport { PRICING_DATA, PRICING_GENERATED_AT, PRICING_CHECKED_AT } from \"./pricing-data.js\";\nimport { stripDatedSuffix } from \"../cost/pricing.js\";\nimport { PRICING } from \"../cost/pricing.js\";\nimport { MEDIA_PRICING, MEDIA_PRICING_CHECKED_AT, mediaUnitCounts } from \"../cost/media-pricing.js\";\n\nexport type PriceRegion = \"eu\" | \"us\" | \"cn\" | \"other\";\n\nexport interface ModelPrice {\n /** Vendor/provider prefix (e.g. \"deepseek\", \"anthropic\"). */\n provider: string;\n /** Model id (OpenRouter-style \"vendor/model\", or the bare model for curated entries). */\n model: string;\n /** Human label, when known. */\n name?: string;\n /** USD per 1M input tokens. */\n inputPer1M: number;\n /** USD per 1M output tokens. */\n outputPer1M: number;\n /** Pricing unit: \"per_1m_tokens\", or \"per_sec\" / \"per_image\" for a media model.\n * Check it before reading the token rates — they are 0 on a media row, which is a\n * placeholder and NOT a claim that the model is free. */\n unit: string;\n /** USD per second of generated video. Set only when `unit` is \"per_sec\". */\n perSec?: number;\n /** USD per generated image. Set only when `unit` is \"per_image\". */\n perImage?: number;\n /** ISO date this row was last verified. Media rows carry a HUMAN-set date; token\n * rows inherit the inventory snapshot's. */\n checkedAt?: string;\n /** GDPR region derived from the PROVIDER NAME — a rough grouping, not a residency\n * claim. It is `\"other\"` for vertex/bfl/fal/azure precisely because those take a\n * configurable endpoint, so their region is a property of the CALL and not of the\n * model. For an actual residency answer use `regionOfHost()` before the call, or\n * `usage.region` after it. */\n region: PriceRegion;\n /** \"curated\" = authoritative hand-maintained number; \"inventory\" = from inventory.json. */\n source: \"curated\" | \"inventory\";\n}\n\nexport interface PriceFilter {\n provider?: string;\n region?: PriceRegion;\n /** Only models at/under this USD-per-1M input rate. */\n maxInputPer1M?: number;\n /** Only $0/$0 models when true; only paid when false. */\n free?: boolean;\n}\n\n/** Final model token: strip an optional \"provider:\" prefix, then an optional \"vendor/\" path. */\nconst basename = (id: string): string => {\n let s = id.toLowerCase();\n const colon = s.lastIndexOf(\":\");\n if (colon >= 0) s = s.slice(colon + 1);\n const slash = s.lastIndexOf(\"/\");\n if (slash >= 0) s = s.slice(slash + 1);\n return s;\n};\n\n/** Region for a curated-only entry whose vendor isn't in the inventory. */\nfunction regionForProvider(provider: string): PriceRegion {\n switch (provider) {\n case \"mistral\":\n case \"mistralai\":\n return \"eu\";\n case \"deepseek\":\n return \"cn\";\n case \"anthropic\":\n case \"openai\":\n case \"google\":\n case \"x-ai\":\n case \"meta-llama\":\n return \"us\";\n default:\n return \"other\";\n }\n}\n\n/** Media rows as ModelPrice, keyed by lowercased model id.\n *\n * Deliberately NOT merged into `_list`: `listModelPrices()` / `findModelPrices()`\n * would then hand a Veo row to a `maxInputPer1M` filter, where its placeholder\n * `inputPer1M: 0` reads as \"free\" — a new wrong-layer answer in the middle of\n * fixing one. Lookup by id is safe (no filter to fool); listing is not. */\nlet _media: Map<string, ModelPrice> | null = null;\n\nfunction ensureMedia(): Map<string, ModelPrice> {\n if (_media) return _media;\n const m = new Map<string, ModelPrice>();\n for (const [key, p] of Object.entries(MEDIA_PRICING)) {\n const ci = key.indexOf(\":\");\n const provider = ci >= 0 ? key.slice(0, ci) : \"\";\n const model = ci >= 0 ? key.slice(ci + 1) : key;\n const row: ModelPrice = {\n provider,\n model,\n inputPer1M: 0,\n outputPer1M: 0,\n unit: p.unit,\n ...(p.unit === \"per_sec\" ? { perSec: p.usd } : { perImage: p.usd }),\n checkedAt: p.checkedAt,\n region: regionForProvider(provider),\n source: \"curated\",\n };\n // The fully-qualified key always wins for itself; the BARE alias is first-write.\n // Veo lives under both gemini and vertex with identical numbers, so a bare lookup\n // can only name one provider — last-write-wins made that answer arbitrary (it was\n // \"vertex\" purely because of spread order). First-write pins it to the consumer\n // Gemini API, and anyone who means the other one asks for \"vertex:<model>\".\n if (!m.has(model.toLowerCase())) m.set(model.toLowerCase(), row);\n m.set(key.toLowerCase(), row);\n }\n _media = m;\n return m;\n}\n\n/** Every non-token price the SDK bills from (F050). Separate from\n * {@link listModelPrices} because the two answer different questions and mixing\n * them silently changed what an existing caller's list meant. */\nexport function listMediaPrices(): ModelPrice[] {\n return [...new Set(ensureMedia().values())];\n}\n\nlet _list: ModelPrice[] | null = null;\nlet _full: Map<string, ModelPrice> | null = null;\nlet _base: Map<string, ModelPrice> | null = null;\n\nfunction ensure(): void {\n // BEFORE the early return, so every lookup path reaches it — not only the first one\n // that happened to build the table. The once-per-process guard lives in the warner.\n warnIfPricingStale();\n if (_list) return;\n const list: ModelPrice[] = [];\n const byBase = new Map<string, ModelPrice>();\n for (const r of PRICING_DATA) {\n const e: ModelPrice = {\n provider: r.provider,\n model: r.model,\n name: r.name,\n inputPer1M: r.input,\n outputPer1M: r.output,\n unit: r.unit,\n region: ([\"eu\", \"us\", \"cn\", \"other\"].includes(r.region) ? r.region : \"other\") as PriceRegion,\n source: \"inventory\",\n };\n list.push(e);\n byBase.set(basename(r.model), e);\n }\n // Overlay the curated table (authoritative). Match on model basename; add if new.\n for (const [key, p] of Object.entries(PRICING)) {\n const ci = key.indexOf(\":\");\n const provider = ci >= 0 ? key.slice(0, ci) : \"\";\n const modelPart = ci >= 0 ? key.slice(ci + 1) : key;\n const existing = byBase.get(basename(modelPart));\n if (existing) {\n existing.inputPer1M = p.inputPer1M;\n existing.outputPer1M = p.outputPer1M;\n existing.unit = \"per_1m_tokens\";\n existing.source = \"curated\";\n } else {\n const e: ModelPrice = {\n provider,\n model: modelPart,\n inputPer1M: p.inputPer1M,\n outputPer1M: p.outputPer1M,\n unit: \"per_1m_tokens\",\n region: regionForProvider(provider),\n source: \"curated\",\n };\n list.push(e);\n byBase.set(basename(modelPart), e);\n }\n }\n _list = list;\n _base = byBase;\n _full = new Map(list.map((e) => [e.model.toLowerCase(), e]));\n}\n\n/** Exact price for a model. `modelId` accepts \"vendor/model\", \"provider:model\", or a\n * bare model/basename. Returns undefined if unknown. */\nexport function getModelPrice(modelId: string): ModelPrice | undefined {\n ensure();\n const s = modelId.trim().toLowerCase();\n // The dated-snapshot fallback is LAST, after every exact form, so a provider that\n // genuinely prices a dated snapshot differently keeps its own row.\n const dated = stripDatedSuffix(s);\n const media = ensureMedia();\n return (\n _full!.get(s) ??\n (s.includes(\":\") ? _full!.get(s.slice(s.indexOf(\":\") + 1)) : undefined) ??\n _base!.get(basename(s)) ??\n (dated !== s ? (_full!.get(dated) ?? _base!.get(basename(dated))) : undefined) ??\n // Media LAST, so a token model never loses its own row to a media id collision.\n // Before F050 this returned undefined for every video model, which a caller could\n // not tell apart from \"we have no price for that anywhere\".\n media.get(s) ??\n (s.includes(\":\") ? media.get(s.slice(s.indexOf(\":\") + 1)) : undefined)\n );\n}\n\n/** Every known model price (inventory, with the curated overlay applied). */\nexport function listModelPrices(): ModelPrice[] {\n ensure();\n return _list!.slice();\n}\n\n/** Filter the price list (provider / region / max input rate / free-only). */\nexport function findModelPrices(filter: PriceFilter = {}): ModelPrice[] {\n return listModelPrices().filter((m) => {\n if (filter.provider && m.provider !== filter.provider) return false;\n if (filter.region && m.region !== filter.region) return false;\n if (filter.maxInputPer1M != null && m.inputPer1M > filter.maxInputPer1M) return false;\n if (filter.free === true && (m.inputPer1M !== 0 || m.outputPer1M !== 0)) return false;\n if (filter.free === false && m.inputPer1M === 0 && m.outputPer1M === 0) return false;\n return true;\n });\n}\n\n/** Convenience USD compute for a token-priced model; undefined if unknown / not token-priced. */\nexport function priceCall(modelId: string, inputTokens: number, outputTokens: number): number | undefined {\n const p = getModelPrice(modelId);\n if (!p || p.unit !== \"per_1m_tokens\") return undefined;\n return (inputTokens / 1_000_000) * p.inputPer1M + (outputTokens / 1_000_000) * p.outputPer1M;\n}\n\n/** ISO timestamp of the inventory snapshot these prices came from.\n *\n * **This is when the NUMBERS LAST MOVED, not when we last checked them** — so it is\n * the wrong field to measure staleness with. Use {@link pricingFreshness}. Kept as-is\n * because consumers already call it and its value has not changed meaning. */\nexport function pricingGeneratedAt(): string {\n return PRICING_GENERATED_AT;\n}\n\n/** How old a price check may be before we call it stale.\n *\n * ONE constant: the `model-advisor` skill quotes the same number, and two copies of a\n * threshold drift apart until the doc and the code disagree about what \"stale\" means. */\nexport const PRICING_STALE_AFTER_DAYS = 35;\n\n/** Freshness of ONE pricing unit. */\nexport interface UnitFreshness {\n unit: string;\n /** How many rows the table holds in this unit. Zero means NOT COVERED — which is\n * a different answer from \"covered and fresh\", and used to be indistinguishable. */\n count: number;\n /** When a check last happened for this unit. Empty = never. */\n checkedAt: string;\n ageDays: number | null;\n stale: boolean;\n}\n\nexport interface PricingFreshness {\n /** When the numbers last CHANGED. */\n generatedAt: string;\n /** When we last VERIFIED them against the live catalogue. Empty on a pre-F046\n * snapshot, which means \"we cannot say\" — never \"fresh\". */\n checkedAt: string;\n /** Days since `checkedAt`; `null` when there is no check date to measure from. */\n ageDays: number | null;\n /** True when the check is older than {@link PRICING_STALE_AFTER_DAYS} — or when\n * there is no check date at all. An unanswerable question is not a pass.\n *\n * **Scope: the TOKEN table only.** Unchanged from F046 on purpose — consumers and\n * the release guard already read it. For \"is anything I might bill for covered?\",\n * read {@link PricingFreshness.caveats}. */\n stale: boolean;\n thresholdDays: number;\n /** Per-unit breakdown (F050). Every unit the SDK can bill in, whether or not the\n * table has rows for it — an absent unit must show up as `count: 0`, not as an\n * absent key that a caller iterating the object would never notice. */\n units: UnitFreshness[];\n /** Human-readable reservations, one per unit that is uncovered or stale.\n *\n * This is the field that makes `stale: false` honest. super measured the state it\n * exists to end: `{ageDays: 0, stale: false}` on a table where per-second prices\n * could not exist, so the API built to catch price drift reported \"fresh\" about\n * numbers it structurally could not see. Empty array = no reservations. */\n caveats: string[];\n}\n\n/** What {@link computeFreshness} needs to judge a unit. Supplied by\n * {@link pricingFreshness} from the real tables; a test passes its own. */\nexport interface UnitInput {\n unit: string;\n count: number;\n checkedAt: string;\n}\n\n/** Is this price table still worth trusting? (F046)\n *\n * Measured from `checkedAt`, deliberately. Prices drift fast — one week between two\n * rebuilds produced 34 price changes, 23 new models and 15 removals, and\n * `google/gemini-3.7-flash` doubled — so a table nobody has verified is a table that\n * quietly bills the wrong number. */\n/** The pure computation, exported so a test can hand it two dates that are FAR APART.\n *\n * Without this seam the only available dates are the shipped constants, and those sit\n * seconds apart on a freshly rebuilt inventory — so a test asserting \"we measure from\n * checkedAt\" would pass just as happily on an implementation that measured from\n * generatedAt. Green because the data was friendly, which is the fault this whole\n * feature is about. */\nexport function computeFreshness(\n generatedAt: string,\n checkedAt: string,\n nowMs: number,\n units: UnitInput[] = [],\n): PricingFreshness {\n const age = (iso: string): number | null => {\n const t = iso ? Date.parse(iso) : NaN;\n // Clamped at 0. A date-only stamp parses as UTC midnight, so a check made TODAY in\n // Copenhagen (UTC+1/+2) reads as tomorrow for the first hours of the day and the\n // raw subtraction floors to -1. \"-1 days old\" is not wrong in a way that endangers\n // anything, but it is a number no reader can act on. 0 is the true answer: it was\n // checked today.\n return Number.isFinite(t) ? Math.max(0, Math.floor((nowMs - t) / 86_400_000)) : null;\n };\n // No check date → stale. The absent case must not read as the healthy one; that is\n // the whole failure this feature exists to remove.\n const isStale = (d: number | null) => d === null || d > PRICING_STALE_AFTER_DAYS;\n\n const ageDays = age(checkedAt);\n const unitRows: UnitFreshness[] = units.map((u) => {\n const a = age(u.checkedAt);\n return { unit: u.unit, count: u.count, checkedAt: u.checkedAt, ageDays: a, stale: isStale(a) };\n });\n\n // A unit with NO rows outranks a stale one in the message: \"we have never priced\n // this\" and \"our price is old\" call for different actions from the reader.\n const caveats = unitRows.flatMap((u) =>\n u.count === 0\n ? [`${u.unit}: 0 rows — this table cannot price anything billed in ${u.unit}, so \"stale: false\" says nothing about it`]\n : u.stale\n ? [\n `${u.unit}: ${u.count} row(s) last verified ${u.checkedAt || \"never\"}` +\n (u.ageDays === null ? \"\" : ` (${u.ageDays} days ago)`) +\n `, past the ${PRICING_STALE_AFTER_DAYS}d threshold`,\n ]\n : [],\n );\n\n return {\n generatedAt,\n checkedAt,\n ageDays,\n stale: isStale(ageDays),\n thresholdDays: PRICING_STALE_AFTER_DAYS,\n units: unitRows,\n caveats,\n };\n}\n\nexport function pricingFreshness(nowMs: number = Date.now()): PricingFreshness {\n return computeFreshness(PRICING_GENERATED_AT, PRICING_CHECKED_AT, nowMs, [\n { unit: \"per_1m_tokens\", count: PRICING_DATA.length, checkedAt: PRICING_CHECKED_AT },\n // Every media unit, derived from the table rather than listed here — a unit added\n // to MEDIA_PRICING and forgotten here would be a unit the freshness API silently\n // does not report, which is this whole feature's own bug wearing a new hat.\n // Hand-maintained, and the monthly job cannot reach them, hence their own date:\n // inheriting the token snapshot's would make an un-revised video price look freshly\n // verified every time the token job ran.\n ...Object.entries(mediaUnitCounts()).map(([unit, count]) => ({\n unit,\n count,\n checkedAt: MEDIA_PRICING_CHECKED_AT,\n })),\n ]);\n}\n\nlet warned = false;\n/** Warn ONCE per process that these prices are old. Called from every price lookup.\n *\n * Once, not per lookup: a library that prints on every call in a loop gets silenced,\n * and a silenced warning is the state we started from. Opt out with\n * `BROBERG_AI_SDK_SILENCE_PRICING_WARNING=1` — offered so that a consumer who does not\n * want the noise turns off the WARNING rather than abandoning the lookup. */\nexport function warnIfPricingStale(nowMs: number = Date.now()): void {\n if (warned) return;\n if (globalThis.process?.env?.BROBERG_AI_SDK_SILENCE_PRICING_WARNING) return;\n const f = pricingFreshness(nowMs);\n // F050 — the caveats are a REASON TO WARN in their own right, not decoration on a\n // warning that already fired. A table can be perfectly fresh on tokens and blind to\n // every per-second price in it, which is the exact state that shipped for months.\n if (!f.stale && f.caveats.length === 0) return;\n warned = true;\n // ONE console.warn, however many things are wrong. A library that prints eight lines\n // on first use gets silenced, and a silenced warning is the state we started from —\n // the same reasoning as warning once rather than per lookup, one level up.\n const parts: string[] = [];\n if (f.stale) {\n const age = f.ageDays === null ? \"of unknown age\" : `${f.ageDays} days old`;\n parts.push(\n `price table is ${age} (last verified ${f.checkedAt || \"never\"}, threshold ` +\n `${f.thresholdDays}d). Prices drift: one week has produced 34 changes before. ` +\n `Refresh with \\`bun run scripts/build-inventory.ts\\` in ai-sdk, or take a newer release.`,\n );\n }\n if (f.caveats.length > 0) {\n parts.push(\n `${f.caveats.length} pricing caveat(s): ${f.caveats.join(\"; \")}. Non-token prices are ` +\n `HAND-maintained (no vendor catalogue API serves them), so refreshing them means a ` +\n `human re-reading the vendor's pricing page and bumping MEDIA_PRICING_CHECKED_AT in ` +\n `src/cost/media-pricing.ts.`,\n );\n }\n console.warn(`[@broberg/ai-sdk] ${parts.join(\" | \")}`);\n}\n\n/** Test-only: forget that we already warned. */\nexport function resetPricingWarningForTests(): void {\n warned = false;\n}\n"],"mappings":"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","names":[]}
|