diff --git a/package.json b/package.json index db51536..19b3e2e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "kimiswitch", "private": true, - "version": "0.7.7", + "version": "0.7.8", "type": "module", "scripts": { "dev": "vite", diff --git a/release-notes-v0.7.8.md b/release-notes-v0.7.8.md new file mode 100644 index 0000000..0df5aff --- /dev/null +++ b/release-notes-v0.7.8.md @@ -0,0 +1,13 @@ +## v0.7.8 + +### 修复:模型用量上下显示不同步 + +- 修复同一供应商卡片上,上方用量摘要(含 🔄 刷新按钮)刷新后、下方用量进度条仍停留在旧数据的问题(如上方 24% vs 下方 8%) +- 用量查询状态提升至卡片层统一持有:点刷新、自动轮询后,两处显示同帧同步更新 +- 自动刷新间隔不再只挂在其中一处显示上,每卡片恰好一份定时器,行为不变 + +### 实验功能开关同步 kimi-code 最新旗标注册表 + +- 高级设置的实验功能清单对齐 kimi-code 上游 v2 旗标注册表(7 项) +- 新增开关:**Tower 模式**(多智能体协同,/tower 命令切换)、**子代理 Fork 上下文**(Agent/AgentSwarm 携带主代理会话快照)、**WaitFor 工具**(回合内等待后台任务)、**自动会话标题**(托管 chat_title 工具) +- 移除上游已废弃的 **ACP v2 协议** 开关(手写进 config.toml 的配置仍会完整保留) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index a215e8c..dc88efc 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1978,7 +1978,7 @@ dependencies = [ [[package]] name = "kimiswitch" -version = "0.7.7" +version = "0.7.8" dependencies = [ "anyhow", "chrono", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index b5ca9ba..21092a6 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kimiswitch" -version = "0.7.7" +version = "0.7.8" description = "Kimi Switch - model config manager" authors = ["codingplan.site"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 767ad3d..ef65ab1 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "productName": "Kimi Switch", - "version": "0.7.7", + "version": "0.7.8", "identifier": "com.kimiswitch.app", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/ProviderList.tsx b/src/components/ProviderList.tsx index 22bbe95..6089ddd 100644 --- a/src/components/ProviderList.tsx +++ b/src/components/ProviderList.tsx @@ -4,6 +4,7 @@ import { Pencil, Copy, Activity, Loader2, Trash2, BarChart3 } from "lucide-react import { useTranslation } from "../i18n"; import { ProviderIcon } from "./ProviderIcon"; import { UsageFooter } from "./UsageFooter"; +import { useUsageQuery } from "../hooks/useUsageQuery"; import type { Agent, Model, Provider } from "../types"; interface ConnectivityResult { @@ -32,6 +33,228 @@ interface ProviderListProps { agent: Agent; } +interface ProviderCardProps { + provider: Provider; + agent: Agent; + defaultModel: string | null; + models: Record; + /** Inline connectivity-test state for this provider, or undefined when idle. */ + ts: TestState | undefined; + onEdit: (name: string) => void; + onDelete: (name: string) => void; + onDuplicate: (name: string) => void; + onSwitchProvider: (name: string) => void; + onConfigureUsage: (name: string) => void; + onTest: (provider: Provider) => void; +} + +function ProviderCard({ + provider, + agent, + defaultModel, + models, + ts, + onEdit, + onDelete, + onDuplicate, + onSwitchProvider, + onConfigureUsage, + onTest, +}: ProviderCardProps) { + const { t } = useTranslation(); + // Usage query state lives once per card; both the compact (card header) and + // detail (footer) UsageFooter variants read this same state, so a refresh + // from either side updates both. + const usage = useUsageQuery( + agent, + provider.name, + provider.usageKinds, + provider.usageConfig?.autoQueryIntervalMinutes + ); + const providerModels = Object.values(models).filter( + (m) => m.provider === provider.name + ); + const defaultModelName = defaultModel + ? models[defaultModel]?.model || models[defaultModel]?.display_name || defaultModel + : null; + const isActive = provider.active === true; + + return ( +
onEdit(provider.name)} + > +
+ + +
+
+

+ {provider.name} +

+ {isActive && ( + + {t("inUse")} + + )} + {provider.note && ( + + {provider.note} + + )} +
+
+ + {provider.official_url || provider.base_url || t("noUrl")} + + + {provider.provider_type} + + + {t("modelCount", { count: providerModels.length })} + +
+
+ +
+ {defaultModel && + models[defaultModel]?.provider === provider.name && ( + + {t("defaultModel", { name: defaultModelName ?? "" })} + + )} + {/* inline connectivity test result */} + {ts && ts.status !== "testing" && ( + 6000 + ? "bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 border-orange-300 dark:border-orange-500/30" + : "bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 border-green-300 dark:border-green-500/30" + : "bg-red-100 dark:bg-red-900/30 text-red-500 dark:text-red-400 border-red-300 dark:border-red-500/30" + }`} + title={ + ts.status === "fail" + ? ts.error || t("connectivityFail", { name: provider.name, error: "" }) + : ts.latency && ts.latency > 6000 + ? t("connectivitySlow", { name: provider.name, latency: ts.latency ?? 0 }) + : t("connectivityOk", { name: provider.name, latency: ts.latency ?? 0 }) + } + > + {ts.status === "ok" ? `${ts.latency}ms` : "✕"} + + )} + {/* compact usage summary — sits left of the switch button, + mirroring cc-switch's card layout (usage → action buttons) */} + {(provider.usageKinds?.length ?? 0) > 0 && ( + + )} + + {agent === "kimi_code" && ( + + ⓘ + + )} + + {/* icon button group */} + + + + + +
+
+ +
+ ); +} + const iconBtn = "w-8 h-8 flex items-center justify-center rounded border border-border text-content-muted hover:text-content-primary hover:bg-hover-2 focus:ring-2 focus:ring-blue-500 focus:outline-none transition-colors"; @@ -139,205 +362,22 @@ export function ProviderList({ ) : (
- {sortedProviders.map((provider) => { - const providerModels = Object.values(models).filter( - (m) => m.provider === provider.name - ); - const defaultModelName = defaultModel - ? models[defaultModel]?.model || models[defaultModel]?.display_name || defaultModel - : null; - const isActive = provider.active === true; - const ts = testState[provider.name]; - - return ( -
onEdit(provider.name)} - > -
- - -
-
-

- {provider.name} -

- {isActive && ( - - {t("inUse")} - - )} - {provider.note && ( - - {provider.note} - - )} -
-
- - {provider.official_url || provider.base_url || t("noUrl")} - - - {provider.provider_type} - - - {t("modelCount", { count: providerModels.length })} - -
-
- -
- {defaultModel && - models[defaultModel]?.provider === provider.name && ( - - {t("defaultModel", { name: defaultModelName ?? "" })} - - )} - {/* inline connectivity test result */} - {ts && ts.status !== "testing" && ( - 6000 - ? "bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 border-orange-300 dark:border-orange-500/30" - : "bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 border-green-300 dark:border-green-500/30" - : "bg-red-100 dark:bg-red-900/30 text-red-500 dark:text-red-400 border-red-300 dark:border-red-500/30" - }`} - title={ - ts.status === "fail" - ? ts.error || t("connectivityFail", { name: provider.name, error: "" }) - : ts.latency && ts.latency > 6000 - ? t("connectivitySlow", { name: provider.name, latency: ts.latency ?? 0 }) - : t("connectivityOk", { name: provider.name, latency: ts.latency ?? 0 }) - } - > - {ts.status === "ok" ? `${ts.latency}ms` : "✕"} - - )} - {/* compact usage summary — sits left of the switch button, - mirroring cc-switch's card layout (usage → action buttons) */} - {(provider.usageKinds?.length ?? 0) > 0 && ( - - )} - - {agent === "kimi_code" && ( - - ⓘ - - )} - - {/* icon button group */} - - - - - -
-
- -
- ); - })} + {sortedProviders.map((provider) => ( + + ))}
)} diff --git a/src/components/SubagentSettingsPage.tsx b/src/components/SubagentSettingsPage.tsx index c8b2d85..6c3486d 100644 --- a/src/components/SubagentSettingsPage.tsx +++ b/src/components/SubagentSettingsPage.tsx @@ -44,11 +44,17 @@ const EFFORT_LABELS: Record<(typeof EFFORTS)[number], TranslationKey> = { const FLAG_LABELS: Record = { "secondary-model": { name: "flagSecondaryModel", desc: "flagSecondaryModelDesc" }, "tool-select": { name: "flagToolSelect", desc: "flagToolSelectDesc" }, - "acp-v2": { name: "flagAcpV2", desc: "flagAcpV2Desc" }, persistence_minidb_readmodel: { name: "flagMinidbReadmodel", desc: "flagMinidbReadmodelDesc", }, + tower: { name: "flagTower", desc: "flagTowerDesc" }, + subagent_fork: { name: "flagSubagentFork", desc: "flagSubagentForkDesc" }, + wait_for: { name: "flagWaitFor", desc: "flagWaitForDesc" }, + auto_session_title: { + name: "flagAutoSessionTitle", + desc: "flagAutoSessionTitleDesc", + }, }; /** Validation-error i18n key per engine rule, for the pre-write self-check. */ diff --git a/src/components/UsageFooter.tsx b/src/components/UsageFooter.tsx index 61331dc..6cc2cb9 100644 --- a/src/components/UsageFooter.tsx +++ b/src/components/UsageFooter.tsx @@ -1,175 +1,23 @@ -import { useCallback, useEffect, useRef, useState } from "react"; -import { invoke } from "@tauri-apps/api/core"; +import { useEffect, useState } from "react"; import { Loader2, RefreshCw } from "lucide-react"; import { useTranslation } from "../i18n"; import { localizeUsageError, planLabel } from "../lib/usage-display"; -import type { Agent } from "../types"; - -interface UsageData { - planName?: string | null; - remaining?: number | null; - total?: number | null; - used?: number | null; - unit?: string | null; - isValid?: boolean | null; - resetsAt?: string | null; -} - -interface UsageResult { - success: boolean; - data?: UsageData[] | null; - error?: string | null; -} - -type UsageStatus = "idle" | "loading" | "success" | "error"; - -interface CacheEntry { - status: "success" | "error"; - data: UsageData[]; - /** Raw error text from Rust; null = transient failure (invoke rejected). */ - error: string | null; - updatedAt: number; -} - -// Module-level cache shared across mounts: re-entering the list within the -// stale TTL shows the last result without firing new requests. Both the -// compact (card header) and detail (footer) variants read this same cache. -const STALE_TTL_MS = 5 * 60 * 1000; -const cache = new Map(); - -// Simple semaphore: at most MAX_CONCURRENT queries in flight at once. -const MAX_CONCURRENT = 3; -let running = 0; -const waiters: Array<() => void> = []; -async function acquireSlot(): Promise { - if (running >= MAX_CONCURRENT) { - await new Promise((resolve) => waiters.push(resolve)); - } - running += 1; -} -function releaseSlot(): void { - running -= 1; - waiters.shift()?.(); -} +import type { UsageData, UsageQueryState } from "../hooks/useUsageQuery"; interface UsageFooterProps { - agent: Agent; - providerName: string; - usageKinds?: string[]; + /** Query state lifted to the provider card via useUsageQuery. Both the + * compact (card header) and detail (footer) variants read the same state, + * so a refresh from either updates both. */ + usage: UsageQueryState; /** "detail" (default) renders the multi-line footer; "compact" renders a * one-line summary + last-updated + refresh button for the card header. */ variant?: "detail" | "compact"; - /** Auto query interval in minutes; only wired on the compact variant so - * both variants do not double-fire. 0/undefined = manual only. */ - autoIntervalMinutes?: number; } -export function UsageFooter({ - agent, - providerName, - usageKinds, - variant = "detail", - autoIntervalMinutes, -}: UsageFooterProps) { +export function UsageFooter({ usage, variant = "detail" }: UsageFooterProps) { const { t } = useTranslation(); - const supported = (usageKinds?.length ?? 0) > 0; - // Cache key includes the agent so a Kimi Code provider and a Pi provider - // with the same name do not clobber each other's cached result. - const cacheKey = `${agent}:${providerName}`; - - const [status, setStatus] = useState("idle"); - const [data, setData] = useState([]); - /** undefined = no error; null = network error; string = Rust error text. */ - const [error, setError] = useState(undefined); - const [updatedAt, setUpdatedAt] = useState(null); + const { status, data, error, updatedAt, supported, refresh } = usage; const [now, setNow] = useState(() => Date.now()); - // Generation counter: stale responses (unmounted / superseded query) are ignored. - const genRef = useRef(0); - - const runQuery = useCallback( - async (forceRefresh: boolean) => { - const gen = ++genRef.current; - setStatus("loading"); - setError(undefined); - const finish = (entry: CacheEntry) => { - cache.set(cacheKey, entry); - if (genRef.current !== gen) return; - setStatus(entry.status); - setData(entry.data); - setError(entry.error); - setUpdatedAt(entry.updatedAt); - }; - try { - await acquireSlot(); - let result: UsageResult; - try { - result = await invoke("query_provider_usage", { - agent, - providerName, - forceRefresh, - }); - } finally { - releaseSlot(); - } - if (genRef.current !== gen) return; - if (result.success) { - finish({ - status: "success", - data: result.data ?? [], - error: null, - updatedAt: Date.now(), - }); - } else { - // Deterministic failure: keep last good data for ghost display. - finish({ - status: "error", - data: cache.get(cacheKey)?.data ?? [], - error: result.error ?? "", - updatedAt: Date.now(), - }); - } - } catch { - // Transient failure (network / timeout): invoke rejected. - finish({ - status: "error", - data: cache.get(cacheKey)?.data ?? [], - error: null, - updatedAt: Date.now(), - }); - } - }, - [agent, providerName, cacheKey] - ); - - // On mount / provider change: serve fresh cache, otherwise query once. - useEffect(() => { - if (!supported) return; - const cached = cache.get(cacheKey); - if (cached) { - setStatus(cached.status); - setData(cached.data); - setError(cached.error); - setUpdatedAt(cached.updatedAt); - if (Date.now() - cached.updatedAt < STALE_TTL_MS) return; - } - void runQuery(false); - }, [supported, cacheKey, runQuery]); - - // Ignore late responses after unmount. - useEffect(() => { - return () => { - genRef.current += 1; - }; - }, []); - - // Auto query interval (compact variant only, to avoid double-firing). - useEffect(() => { - if (variant !== "compact" || !supported) return; - const mins = autoIntervalMinutes ?? 0; - if (mins <= 0) return; - const id = setInterval(() => void runQuery(false), mins * 60_000); - return () => clearInterval(id); - }, [variant, supported, autoIntervalMinutes, runQuery]); // Tick relative times once a minute while showing data. useEffect(() => { @@ -226,7 +74,7 @@ export function UsageFooter({ type="button" onClick={(e) => { e.stopPropagation(); - void runQuery(true); + void refresh(true); }} disabled={status === "loading"} title={t("usageRefresh")} @@ -344,7 +192,7 @@ export function UsageFooter({ type="button" onClick={(e) => { e.stopPropagation(); - void runQuery(true); + void refresh(true); }} className="ml-auto shrink-0 px-2 py-0.5 rounded border border-red-300 dark:border-red-500/30 text-red-500 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors" > diff --git a/src/hooks/useUsageQuery.ts b/src/hooks/useUsageQuery.ts new file mode 100644 index 0000000..0b9f1db --- /dev/null +++ b/src/hooks/useUsageQuery.ts @@ -0,0 +1,174 @@ +import { useCallback, useEffect, useRef, useState } from "react"; +import { invoke } from "@tauri-apps/api/core"; +import type { Agent } from "../types"; + +export interface UsageData { + planName?: string | null; + remaining?: number | null; + total?: number | null; + used?: number | null; + unit?: string | null; + isValid?: boolean | null; + resetsAt?: string | null; +} + +export interface UsageResult { + success: boolean; + data?: UsageData[] | null; + error?: string | null; +} + +export type UsageStatus = "idle" | "loading" | "success" | "error"; + +export interface CacheEntry { + status: "success" | "error"; + data: UsageData[]; + /** Raw error text from Rust; null = transient failure (invoke rejected). */ + error: string | null; + updatedAt: number; +} + +// Module-level cache shared across mounts: re-entering the list within the +// stale TTL shows the last result without firing new requests. Both the +// compact (card header) and detail (footer) variants read this same cache. +const STALE_TTL_MS = 5 * 60 * 1000; +const cache = new Map(); + +// Simple semaphore: at most MAX_CONCURRENT queries in flight at once. +const MAX_CONCURRENT = 3; +let running = 0; +const waiters: Array<() => void> = []; +async function acquireSlot(): Promise { + if (running >= MAX_CONCURRENT) { + await new Promise((resolve) => waiters.push(resolve)); + } + running += 1; +} +function releaseSlot(): void { + running -= 1; + waiters.shift()?.(); +} + +export interface UsageQueryState { + status: UsageStatus; + data: UsageData[]; + error: string | null | undefined; + updatedAt: number | null; + refresh: (force: boolean) => void; + supported: boolean; +} + +export function useUsageQuery( + agent: Agent, + providerName: string, + usageKinds?: string[], + autoIntervalMinutes?: number +): UsageQueryState { + const supported = (usageKinds?.length ?? 0) > 0; + // Cache key includes the agent so a Kimi Code provider and a Pi provider + // with the same name do not clobber each other's cached result. + const cacheKey = `${agent}:${providerName}`; + + const [status, setStatus] = useState("idle"); + const [data, setData] = useState([]); + /** undefined = no error; null = network error; string = Rust error text. */ + const [error, setError] = useState(undefined); + const [updatedAt, setUpdatedAt] = useState(null); + // Generation counter: stale responses (unmounted / superseded query) are ignored. + const genRef = useRef(0); + + const runQuery = useCallback( + async (forceRefresh: boolean) => { + const gen = ++genRef.current; + setStatus("loading"); + setError(undefined); + const finish = (entry: CacheEntry) => { + cache.set(cacheKey, entry); + if (genRef.current !== gen) return; + setStatus(entry.status); + setData(entry.data); + setError(entry.error); + setUpdatedAt(entry.updatedAt); + }; + try { + await acquireSlot(); + let result: UsageResult; + try { + result = await invoke("query_provider_usage", { + agent, + providerName, + forceRefresh, + }); + } finally { + releaseSlot(); + } + if (genRef.current !== gen) return; + if (result.success) { + finish({ + status: "success", + data: result.data ?? [], + error: null, + updatedAt: Date.now(), + }); + } else { + // Deterministic failure: keep last good data for ghost display. + finish({ + status: "error", + data: cache.get(cacheKey)?.data ?? [], + error: result.error ?? "", + updatedAt: Date.now(), + }); + } + } catch { + // Transient failure (network / timeout): invoke rejected. + finish({ + status: "error", + data: cache.get(cacheKey)?.data ?? [], + error: null, + updatedAt: Date.now(), + }); + } + }, + [agent, providerName, cacheKey] + ); + + // On mount / provider change: serve fresh cache, otherwise query once. + useEffect(() => { + if (!supported) return; + const cached = cache.get(cacheKey); + if (cached) { + setStatus(cached.status); + setData(cached.data); + setError(cached.error); + setUpdatedAt(cached.updatedAt); + if (Date.now() - cached.updatedAt < STALE_TTL_MS) return; + } + void runQuery(false); + }, [supported, cacheKey, runQuery]); + + // Ignore late responses after unmount. + useEffect(() => { + return () => { + genRef.current += 1; + }; + }, []); + + // Auto query interval — the hook is called once per provider card and both + // variants read the same state, so there is no second mount to double-fire. + useEffect(() => { + if (!supported) return; + const mins = autoIntervalMinutes ?? 0; + if (mins <= 0) return; + const id = setInterval(() => void runQuery(false), mins * 60_000); + return () => clearInterval(id); + }, [supported, autoIntervalMinutes, runQuery]); + + return { + status, + data, + error, + updatedAt, + refresh: runQuery, + supported, + }; +} diff --git a/src/i18n/en.ts b/src/i18n/en.ts index fc51111..39cc438 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -465,10 +465,16 @@ export const enTranslations: Record = { flagSecondaryModelDesc: "Newly spawned subagents bind a second (usually cheaper) model config", flagToolSelect: "Tool Select", flagToolSelectDesc: "Enable the experimental tool selection feature", - flagAcpV2: "ACP v2 Protocol", - flagAcpV2Desc: "Enable Agent Communication Protocol v2", flagMinidbReadmodel: "MiniDB Read Model", flagMinidbReadmodelDesc: "Enable the v2 engine MiniDB read-model backend", + flagTower: "Tower Mode", + flagTowerDesc: "Enable tower mode: coordinate multiple agents on a shared objective (/tower command)", + flagSubagentFork: "Subagent Fork Context", + flagSubagentForkDesc: "Agent/AgentSwarm tools can start a subagent with a snapshot of the calling agent's history (fork parameter)", + flagWaitFor: "WaitFor Tool", + flagWaitForDesc: "The agent can wait for background tasks to finish within the current turn", + flagAutoSessionTitle: "Auto Session Title", + flagAutoSessionTitleDesc: "Generate session titles automatically via the managed chat_title tool", lockedByEnv: "Locked by env var", masterEnvOnHint: "KIMI_CODE_EXPERIMENTAL_FLAG is set: all experimental features are forced on by the env var", secondaryModelSection: "Subagent Model (Secondary Model)", diff --git a/src/i18n/zh.ts b/src/i18n/zh.ts index 587b5c9..aa2d74a 100644 --- a/src/i18n/zh.ts +++ b/src/i18n/zh.ts @@ -460,10 +460,16 @@ export const zhTranslations = { flagSecondaryModelDesc: "子代理派发时绑定第二份(通常更便宜的)模型配置", flagToolSelect: "工具选择", flagToolSelectDesc: "启用实验性工具选择功能", - flagAcpV2: "ACP v2 协议", - flagAcpV2Desc: "启用 Agent Communication Protocol v2", flagMinidbReadmodel: "MiniDB 读模型", flagMinidbReadmodelDesc: "启用 v2 引擎 MiniDB 读模型后端", + flagTower: "Tower 模式", + flagTowerDesc: "启用 Tower 多智能体协同模式(/tower 命令切换)", + flagSubagentFork: "子代理 Fork 上下文", + flagSubagentForkDesc: "Agent/AgentSwarm 工具可携带主代理会话快照启动子代理(fork 参数)", + flagWaitFor: "WaitFor 工具", + flagWaitForDesc: "代理可在当前回合内等待后台任务完成,而无需结束回合再被唤醒", + flagAutoSessionTitle: "自动会话标题", + flagAutoSessionTitleDesc: "通过托管 chat_title 工具自动生成会话标题", lockedByEnv: "被环境变量锁定", masterEnvOnHint: "KIMI_CODE_EXPERIMENTAL_FLAG 已设置:全部实验功能被环境变量强制开启", secondaryModelSection: "子代理模型(次主力模型)", diff --git a/src/lib/models-dev-full.json b/src/lib/models-dev-full.json index b401872..9516ac8 100644 --- a/src/lib/models-dev-full.json +++ b/src/lib/models-dev-full.json @@ -1,5 +1,5 @@ { - "last_updated": "2026-08-22", + "last_updated": "2026-08-25", "providers": { "hpc-ai": { "id": "hpc-ai", @@ -4114,6 +4114,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "moonshotai/kimi-k3", + "name": "Kimi K3", + "cost": { + "input": 0, + "output": 0 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "moonshotai/kimi-k2-instruct-0905", "name": "Kimi K2 0905", @@ -4215,6 +4230,19 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek-ai/deepseek-v4-flash-0731", + "name": "DeepSeek V4 Flash 0731", + "cost": { + "input": 0, + "output": 0 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "stepfun-ai/step-3.5-flash", "name": "Step 3.5 Flash", @@ -6659,6 +6687,21 @@ "reasoning": true, "tool_call": true }, + { + "id": "Gemma-4-31B-MeroMero-v2", + "name": "Gemma 4 31B MeroMero v2", + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + }, + "context": 65536, + "input_limit": 65536, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "gemini-3-pro-image-preview", "name": "Gemini 3 Pro Image", @@ -6720,12 +6763,12 @@ "name": "Venice Uncensored", "cost": { "input": 0.4, - "output": 0.4, - "cache_read": 0.2 + "output": 1.8, + "cache_read": 0.4 }, "context": 128000, "input_limit": 128000, - "output_limit": 16384 + "output_limit": 8192 }, { "id": "gemini-2.5-flash-preview-04-17:thinking", @@ -8384,6 +8427,21 @@ "input_limit": 32768, "output_limit": 32768 }, + { + "id": "Gemma-4-31B-MeroMero-v2:thinking", + "name": "Gemma 4 31B MeroMero v2 Thinking", + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + }, + "context": 65536, + "input_limit": 65536, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "image": true + }, { "id": "gemini-2.5-flash-preview-05-20:thinking", "name": "Gemini 2.5 Flash 0520 Thinking", @@ -9720,9 +9778,9 @@ "id": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek V4 Flash Vision Exp", "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 }, "context": 1048576, "input_limit": 1048576, @@ -9911,20 +9969,39 @@ "reasoning": true, "image": true }, + { + "id": "google/gemma-4-26b-a4b-uncensored:thinking", + "name": "Gemma 4 26B A4B Uncensored Thinking", + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + }, + "context": 131072, + "input_limit": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemini-flash-latest", "name": "Gemini Flash Latest", "cost": { - "input": 0.75, - "output": 3.75, - "cache_read": 0.075, - "cache_write": 0.041667 + "input": 0.375, + "output": 1.875, + "cache_read": 0.0375, + "cache_write": 0.020833 }, - "context": 1048756, - "input_limit": 1048756, + "context": 1048576, + "input_limit": 1048576, "output_limit": 65536, "reasoning": true, - "image": true + "tool_call": true, + "structured_output": true, + "image": true, + "video": true }, { "id": "google/gemini-3.5-flash", @@ -10010,6 +10087,22 @@ "structured_output": true, "image": true }, + { + "id": "google/gemma-4-26b-a4b-uncensored", + "name": "Gemma 4 26B A4B Uncensored", + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + }, + "context": 131072, + "input_limit": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google/gemma-4-31b-it:thinking", "name": "Gemma 4 31B Thinking", @@ -11342,10 +11435,10 @@ "id": "openai/gpt-5.6-sol", "name": "GPT 5.6 Sol", "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 }, "context": 1050000, "input_limit": 1050000, @@ -11581,10 +11674,10 @@ "id": "openai/gpt-chat-latest", "name": "GPT Chat Latest", "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 }, "context": 1050000, "input_limit": 1050000, @@ -11700,10 +11793,10 @@ "id": "openai/gpt-latest", "name": "GPT Latest", "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 }, "context": 1050000, "input_limit": 1050000, @@ -11855,10 +11948,10 @@ "id": "openai/gpt-5.6-sol-pro", "name": "GPT 5.6 Sol Pro", "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 }, "context": 1050000, "input_limit": 1050000, @@ -12208,13 +12301,29 @@ "input_limit": 32768, "output_limit": 8192 }, + { + "id": "ornith-ai/ornith-1.5-397b", + "name": "Ornith 1.5 397B", + "cost": { + "input": 0.9, + "output": 3.6, + "cache_read": 0.045 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "ornith-ai/ornith-1.5-35b-a3b", "name": "Ornith 1.5 35B", "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.01 + "cache_read": 0.05 }, "context": 262144, "input_limit": 262144, @@ -12230,7 +12339,55 @@ "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.01 + "cache_read": 0.05 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "ornith-ai/ornith-1.5-9b:thinking", + "name": "Ornith 1.5 9B Thinking", + "cost": { + "input": 0.05, + "output": 0.1, + "cache_read": 0.025 + }, + "context": 131072, + "input_limit": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "ornith-ai/ornith-1.5-9b", + "name": "Ornith 1.5 9B", + "cost": { + "input": 0.05, + "output": 0.1, + "cache_read": 0.025 + }, + "context": 131072, + "input_limit": 131072, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "ornith-ai/ornith-1.5-397b:thinking", + "name": "Ornith 1.5 397B Thinking", + "cost": { + "input": 0.9, + "output": 3.6, + "cache_read": 0.045 }, "context": 262144, "input_limit": 262144, @@ -12418,6 +12575,22 @@ "tool_call": true, "structured_output": true }, + { + "id": "qwen/qwen3.8-27b-obliterated", + "name": "Qwen 3.8 27B Obliterated", + "cost": { + "input": 0.18, + "output": 0.5, + "cache_read": 0.075 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "qwen/Qwen3-VL-235B-A22B-Instruct", "name": "Qwen3 VL 235B A22B Instruct", @@ -12553,21 +12726,6 @@ "input_limit": 41000, "output_limit": 32768 }, - { - "id": "qwen/qwen3.8-27b-uncensored", - "name": "Qwen 3.8 27B Uncensored", - "cost": { - "input": 0.18, - "output": 0.5, - "cache_read": 0.075 - }, - "context": 131072, - "input_limit": 131072, - "output_limit": 32768, - "tool_call": true, - "structured_output": true, - "image": true - }, { "id": "qwen/qwen3.5-plus-thinking", "name": "Qwen3.5 Plus Thinking", @@ -12700,6 +12858,7 @@ "context": 65536, "input_limit": 65536, "output_limit": 32768, + "reasoning": true, "tool_call": true, "structured_output": true, "image": true @@ -12719,6 +12878,38 @@ "image": true, "video": true }, + { + "id": "qwen/qwen3.6-35b-a3b-uncensored:thinking", + "name": "Qwen 3.6 35B A3B Uncensored Thinking", + "cost": { + "input": 0.15, + "output": 0.5, + "cache_read": 0.075 + }, + "context": 65536, + "input_limit": 65536, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "qwen/qwen3.8-27b-obliterated:thinking", + "name": "Qwen 3.8 27B Obliterated Thinking", + "cost": { + "input": 0.18, + "output": 0.5, + "cache_read": 0.075 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "qwen/qwen3-coder-plus", "name": "Qwen3 Coder Plus", @@ -13609,21 +13800,6 @@ "input_limit": 8000, "output_limit": 4096 }, - { - "id": "inclusionai/ring-2.6-1t", - "name": "Ring 2.6 1T", - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - }, - "context": 262144, - "input_limit": 262144, - "output_limit": 65536, - "reasoning": true, - "tool_call": true, - "structured_output": true - }, { "id": "inclusionai/ling-3.0-flash", "name": "Ling 3.0 Flash", @@ -13637,20 +13813,6 @@ "output_limit": 32768, "tool_call": true }, - { - "id": "inclusionai/ling-2.6-1t", - "name": "Ling 2.6 1T", - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - }, - "context": 262144, - "input_limit": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, { "id": "inclusionai/ling-3.0-flash:thinking", "name": "Ling 3.0 Flash Thinking", @@ -13665,20 +13827,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "inclusionai/ling-2.6-flash", - "name": "Ling 2.6 Flash", - "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 - }, - "context": 262144, - "input_limit": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, { "id": "mistral/mistral-medium-3.5:thinking", "name": "Mistral Medium 3.5 Thinking", @@ -14034,18 +14182,6 @@ "input_limit": 1000000, "output_limit": 65535 }, - { - "id": "amazon/nova-micro-v1", - "name": "Amazon Nova Micro 1.0", - "cost": { - "input": 0.0357, - "output": 0.1394, - "cache_read": 0.01785 - }, - "context": 128000, - "input_limit": 128000, - "output_limit": 5120 - }, { "id": "amazon/nova-lite-v1", "name": "Amazon Nova Lite 1.0", @@ -14545,6 +14681,23 @@ "structured_output": true, "image": true }, + { + "id": "TEE/qwen3.8-27b", + "name": "Qwen3.8 27B TEE", + "cost": { + "input": 0.4, + "output": 3, + "cache_read": 0.15 + }, + "context": 262144, + "input_limit": 262144, + "output_limit": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "TEE/qwen3.5-27b", "name": "Qwen3.5 27B TEE", @@ -17274,6 +17427,41 @@ } ] }, + "agentrouter": { + "id": "agentrouter", + "name": "AgentRouter", + "models": [ + { + "id": "claude-opus-4-8", + "name": "Claude Opus 4.8", + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + }, + { + "id": "gpt-5.6-sol", + "name": "GPT-5.6 Sol", + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "claude-opus-5", + "name": "Claude Opus 5", + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + } + ] + }, "google": { "id": "google", "name": "Google", @@ -21801,6 +21989,17 @@ "tool_call": true, "structured_output": true }, + { + "id": "tencent/hy-mt2-7b", + "name": "Hy-MT2-7B", + "cost": { + "input": 0.074, + "output": 0.295 + }, + "context": 8192, + "output_limit": 4096, + "structured_output": true + }, { "id": "~anthropic/claude-haiku-latest", "name": "Anthropic Claude Haiku Latest", @@ -21934,20 +22133,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "nvidia/nemotron-nano-12b-v2-vl:free", - "name": "Nemotron Nano 12B 2 VL (free)", - "cost": { - "input": 0, - "output": 0 - }, - "context": 128000, - "output_limit": 128000, - "reasoning": true, - "tool_call": true, - "image": true, - "video": true - }, { "id": "nvidia/nemotron-3-ultra-550b-a55b", "name": "Nemotron 3 Ultra 550B A55B", @@ -22012,31 +22197,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "nvidia/nemotron-3-nano-30b-a3b:free", - "name": "Nemotron 3 Nano 30B A3B (free)", - "cost": { - "input": 0, - "output": 0 - }, - "context": 256000, - "output_limit": 256000, - "reasoning": true, - "tool_call": true - }, - { - "id": "nvidia/nemotron-nano-9b-v2:free", - "name": "Nemotron Nano 9B V2 (free)", - "cost": { - "input": 0, - "output": 0 - }, - "context": 128000, - "output_limit": 128000, - "reasoning": true, - "tool_call": true, - "structured_output": true - }, { "id": "~openai/gpt-latest", "name": "OpenAI GPT Latest", @@ -22125,7 +22285,7 @@ "output": 0.65 }, "context": 6144, - "output_limit": 6144, + "output_limit": 4096, "structured_output": true }, { @@ -22263,12 +22423,12 @@ "id": "z-ai/glm-5.2", "name": "GLM-5.2", "cost": { - "input": 0.966, - "output": 3.036, - "cache_read": 0.1932 + "input": 1.19, + "output": 3.74, + "cache_read": 0.221 }, "context": 1048576, - "output_limit": 131072, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true @@ -22305,12 +22465,12 @@ "id": "z-ai/glm-5.1", "name": "GLM-5.1", "cost": { - "input": 0.966, - "output": 3.036, - "cache_read": 0.1794 + "input": 1.26, + "output": 3.96, + "cache_read": 0.234 }, "context": 204800, - "output_limit": 128000, + "output_limit": 202752, "reasoning": true, "tool_call": true, "structured_output": true @@ -22373,9 +22533,9 @@ "id": "deepseek/deepseek-v4-flash", "name": "DeepSeek V4 Flash", "cost": { - "input": 0.07406, - "output": 0.14812, - "cache_read": 0.014812 + "input": 0.088606, + "output": 0.177212, + "cache_read": 0.017721 }, "context": 1048576, "output_limit": 384000, @@ -22387,9 +22547,9 @@ "id": "deepseek/deepseek-v4-pro-0813", "name": "DeepSeek V4 Pro 0813", "cost": { - "input": 1.188, - "output": 3.564, - "cache_read": 0.0396 + "input": 1.122, + "output": 3.366, + "cache_read": 0.0374 }, "context": 1048576, "output_limit": 384000, @@ -22401,9 +22561,9 @@ "id": "deepseek/deepseek-v4-pro", "name": "DeepSeek V4 Pro", "cost": { - "input": 0.481458, - "output": 0.962916, - "cache_read": 0.040122 + "input": 0.790308, + "output": 1.580616, + "cache_read": 0.065859 }, "context": 1048576, "output_limit": 384000, @@ -22505,12 +22665,12 @@ "id": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.08, - "output": 0.18, - "cache_read": 0.016 + "input": 0.14, + "output": 0.28, + "cache_read": 0.028 }, "context": 1310720, - "output_limit": 384000, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -22519,9 +22679,9 @@ "id": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek V4 Flash Vision Exp", "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 }, "context": 1048576, "output_limit": 384000, @@ -23020,8 +23180,8 @@ "id": "meta/muse-glimmer-30b", "name": "Muse Glimmer 30B", "cost": { - "input": 0.3, - "output": 1.1, + "input": 0.35, + "output": 1.5, "cache_read": 0.04 }, "context": 131072, @@ -23407,7 +23567,7 @@ "cost": { "input": 0.67, "output": 3.4, - "cache_read": 0.17 + "cache_read": 0.19 }, "context": 262144, "output_limit": 262144, @@ -23447,9 +23607,9 @@ "id": "moonshotai/kimi-k2.5", "name": "Kimi K2.5", "cost": { - "input": 0.45, - "output": 2.25, - "cache_read": 0.07 + "input": 0.6, + "output": 3, + "cache_read": 0.1 }, "context": 262144, "output_limit": 262144, @@ -23488,9 +23648,9 @@ "id": "moonshotai/kimi-k2.6", "name": "Kimi K2.6", "cost": { - "input": 0.5415, - "output": 2.28, - "cache_read": 0.0912 + "input": 0.95, + "output": 4, + "cache_read": 0.16 }, "context": 262144, "output_limit": 262144, @@ -24232,9 +24392,8 @@ "id": "openai/gpt-oss-120b", "name": "GPT OSS 120B", "cost": { - "input": 0.03, - "output": 0.17, - "cache_read": 0.03 + "input": 0.037, + "output": 0.17 }, "context": 131072, "output_limit": 131072, @@ -24907,7 +25066,7 @@ "input": 0.23, "output": 2.3 }, - "context": 262144, + "context": 131072, "output_limit": 32768, "reasoning": true, "tool_call": true @@ -24972,11 +25131,11 @@ "id": "qwen/qwen3-30b-a3b", "name": "Qwen3 30B A3B", "cost": { - "input": 0.13, - "output": 0.52 + "input": 0.12, + "output": 0.5 }, "context": 131072, - "output_limit": 8192, + "output_limit": 16384, "reasoning": true, "tool_call": true }, @@ -24984,11 +25143,12 @@ "id": "qwen/qwen3.5-397b-a17b", "name": "Qwen3.5 397B-A17B", "cost": { - "input": 0.39, - "output": 2.34 + "input": 0.5, + "output": 3.6, + "cache_read": 0.3 }, "context": 262144, - "output_limit": 65536, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -25283,12 +25443,11 @@ "id": "qwen/qwen3.6-27b", "name": "Qwen3.6 27B", "cost": { - "input": 0.6, - "output": 3.6, - "cache_read": 0.12 + "input": 0.32, + "output": 3.2 }, "context": 262144, - "output_limit": 262144, + "output_limit": 81920, "reasoning": true, "tool_call": true, "structured_output": true, @@ -25312,8 +25471,8 @@ "id": "qwen/qwen3.8-27b", "name": "Qwen3.8 27B", "cost": { - "input": 0.45, - "output": 3.2, + "input": 0.4, + "output": 3, "cache_read": 0.05 }, "context": 1000000, @@ -25404,7 +25563,7 @@ "output": 2.08 }, "context": 262144, - "output_limit": 65536, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -25693,7 +25852,7 @@ "output": 0.4 }, "context": 1024000, - "output_limit": 1024000, + "output_limit": 32768, "tool_call": true, "structured_output": true }, @@ -25749,7 +25908,6 @@ "output_limit": 262144, "reasoning": true, "tool_call": true, - "structured_output": true, "image": true }, { @@ -25759,7 +25917,7 @@ "input": 0, "output": 0 }, - "context": 262144, + "context": 1048576, "output_limit": 262144, "reasoning": true, "tool_call": true, @@ -25786,7 +25944,7 @@ "input": 0, "output": 0 }, - "context": 262144, + "context": 1048576, "output_limit": 262144, "reasoning": true, "tool_call": true, @@ -25806,9 +25964,9 @@ "id": "~deepseek/deepseek-v4-flash-latest", "name": "DeepSeek V4 Flash Latest", "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.02 + "input": 0.035, + "output": 0.12, + "cache_read": 0.01 }, "context": 1310720, "output_limit": 1048576, @@ -25816,19 +25974,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "inclusionai/ring-2.6-1t", - "name": "Ring-2.6-1T", - "cost": { - "input": 0.075, - "output": 0.625, - "cache_read": 0.015 - }, - "context": 262144, - "output_limit": 65536, - "reasoning": true, - "tool_call": true - }, { "id": "inclusionai/ling-3.0-flash", "name": "Ling-3.0-flash", @@ -25842,32 +25987,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "inclusionai/ling-2.6-1t", - "name": "Ling-2.6-1T", - "cost": { - "input": 0.075, - "output": 0.625, - "cache_read": 0.015 - }, - "context": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, - { - "id": "inclusionai/ling-2.6-flash", - "name": "Ling-2.6-flash", - "cost": { - "input": 0.01, - "output": 0.03, - "cache_read": 0.002 - }, - "context": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, { "id": "meta-llama/llama-3.2-3b-instruct", "name": "Llama 3.2 3B Instruct", @@ -26028,6 +26147,19 @@ "output_limit": 128000, "structured_output": true }, + { + "id": "mistralai/devstral-2512", + "name": "Devstral 2", + "cost": { + "input": 0.44, + "output": 2.2, + "cache_read": 0.044 + }, + "context": 262144, + "output_limit": 262144, + "tool_call": true, + "structured_output": true + }, { "id": "mistralai/mistral-small-2603", "name": "Mistral Small 4", @@ -31246,7 +31378,9 @@ "name": "Qwen Plus", "cost": { "input": 0.115, - "output": 0.287 + "output": 0.287, + "cache_read": 0.012, + "cache_write": 0.144 }, "context": 1000000, "output_limit": 32768, @@ -35352,6 +35486,19 @@ "tool_call": true, "image": true }, + { + "id": "longcat-2.0", + "name": "LongCat-2.0", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + }, + "context": 1000000, + "output_limit": 131072, + "reasoning": true, + "tool_call": true + }, { "id": "qwen3.6-plus", "name": "Qwen3.6 Plus", @@ -35455,6 +35602,618 @@ } ] }, + "opper": { + "id": "opper", + "name": "Opper", + "models": [ + { + "id": "vertexai/gemini-3.7-flash-eu", + "name": "Gemini 3.7 Flash (EU)", + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "vertexai/gemini-3.7-flash", + "name": "Gemini 3.7 Flash", + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "meta/muse-spark-1.2", + "name": "Muse Spark 1.2", + "cost": { + "input": 1.25, + "output": 4.25, + "cache_read": 0.15 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "anthropic/claude-opus-4-7", + "name": "Claude Opus 4.7", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-opus-4-8", + "name": "Claude Opus 4.8", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-sonnet-5", + "name": "Claude Sonnet 5", + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-opus-4-5", + "name": "Claude Opus 4.5 (latest)", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 200000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-sonnet-4-6", + "name": "Claude Sonnet 4.6", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3, + "cache_write": 3.75 + }, + "context": 1000000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-sonnet-4-5", + "name": "Claude Sonnet 4.5 (latest)", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3, + "cache_write": 3.75 + }, + "context": 200000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-fable-5", + "name": "Claude Fable 5", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-haiku-4-5", + "name": "Claude Haiku 4.5 (latest)", + "cost": { + "input": 1, + "output": 5, + "cache_read": 0.1, + "cache_write": 1.25 + }, + "context": 200000, + "output_limit": 64000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-opus-4-6", + "name": "Claude Opus 4.6", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "anthropic/claude-opus-5", + "name": "Claude Opus 5", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.3-chat-latest", + "name": "GPT-5.3 Chat (latest)", + "cost": { + "input": 1.75, + "output": 14, + "cache_read": 0.175 + }, + "context": 128000, + "output_limit": 16384, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.5-pro", + "name": "GPT-5.5 Pro", + "cost": { + "input": 30, + "output": 180 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.6-sol", + "name": "GPT-5.6 Sol", + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.4-pro", + "name": "GPT-5.4 Pro", + "cost": { + "input": 30, + "output": 180 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true + }, + { + "id": "openai/gpt-5.6-luna", + "name": "GPT-5.6 Luna", + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.3-codex", + "name": "GPT-5.3 Codex", + "cost": { + "input": 1.75, + "output": 14, + "cache_read": 0.175 + }, + "context": 400000, + "input_limit": 272000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.4-mini", + "name": "GPT-5.4 mini", + "cost": { + "input": 0.75, + "output": 4.5, + "cache_read": 0.075 + }, + "context": 400000, + "input_limit": 272000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.5", + "name": "GPT-5.5", + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.6-terra", + "name": "GPT-5.6 Terra", + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.4", + "name": "GPT-5.4", + "cost": { + "input": 2.5, + "output": 15, + "cache_read": 0.25 + }, + "context": 1050000, + "input_limit": 922000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "openai/gpt-5.4-nano", + "name": "GPT-5.4 nano", + "cost": { + "input": 0.2, + "output": 1.25, + "cache_read": 0.02 + }, + "context": 400000, + "input_limit": 272000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.6", + "name": "Grok 4.6", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.5 + }, + "context": 500000, + "output_limit": 500000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.5", + "name": "Grok 4.5", + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.3 + }, + "context": 500000, + "output_limit": 500000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-build-0.1", + "name": "Grok Build 0.1", + "cost": { + "input": 1, + "output": 2, + "cache_read": 0.2 + }, + "context": 256000, + "output_limit": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "xai/grok-4.3", + "name": "Grok 4.3", + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + }, + "context": 1000000, + "output_limit": 30000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "perplexity/sonar", + "name": "Sonar", + "cost": { + "input": 1, + "output": 1 + }, + "context": 128000, + "output_limit": 4096 + }, + { + "id": "perplexity/sonar-reasoning-pro", + "name": "Sonar Reasoning Pro", + "cost": { + "input": 2, + "output": 8 + }, + "context": 128000, + "output_limit": 4096, + "reasoning": true, + "image": true + }, + { + "id": "perplexity/sonar-pro", + "name": "Sonar Pro", + "cost": { + "input": 3, + "output": 15 + }, + "context": 200000, + "output_limit": 8192, + "image": true + }, + { + "id": "moonshot/kimi-k3", + "name": "Kimi K3", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "mistral/devstral-2512", + "name": "Devstral 2", + "cost": { + "input": 0.4, + "output": 2 + }, + "context": 262144, + "output_limit": 262144, + "tool_call": true + }, + { + "id": "mistral/mistral-small-2603", + "name": "Mistral Small 4", + "cost": { + "input": 0.15, + "output": 0.6 + }, + "context": 256000, + "output_limit": 256000, + "reasoning": true, + "tool_call": true, + "image": true + }, + { + "id": "mistral/mistral-large-2512", + "name": "Mistral Large 3", + "cost": { + "input": 0.5, + "output": 1.5 + }, + "context": 262144, + "output_limit": 262144, + "tool_call": true, + "image": true + }, + { + "id": "gemini/gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "cost": { + "input": 0.3, + "output": 2.5, + "cache_read": 0.03 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "gemini/gemini-3.1-pro-preview", + "name": "Gemini 3.1 Pro Preview", + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "gemini/gemini-3.5-flash", + "name": "Gemini 3.5 Flash", + "cost": { + "input": 1.5, + "output": 9, + "cache_read": 0.15 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "gemini/gemini-3-flash-preview", + "name": "Gemini 3 Flash Preview", + "cost": { + "input": 0.5, + "output": 3, + "cache_read": 0.05 + }, + "context": 1048576, + "output_limit": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, + { + "id": "minimax/m3", + "name": "MiniMax-M3", + "cost": { + "input": 0.6, + "output": 2.4, + "cache_read": 0.12 + }, + "context": 1048576, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + } + ] + }, "xai": { "id": "xai", "name": "xAI", @@ -36179,6 +36938,22 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepinfra/mimo-v2.5", + "name": "MiMo V2.5 (DeepInfra)", + "cost": { + "input": 0.4, + "output": 2, + "cache_read": 0.08 + }, + "context": 262144, + "output_limit": 16384, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "deepinfra/nemotron-3-ultra-550b", "name": "Nemotron 3 Ultra 550B (DeepInfra)", @@ -36282,6 +37057,18 @@ "reasoning": true, "tool_call": true }, + { + "id": "deepinfra/mimo-v2.5-pro", + "name": "MiMo V2.5 Pro (DeepInfra)", + "cost": { + "input": 1, + "output": 3, + "cache_read": 0.2 + }, + "context": 1048576, + "output_limit": 16384, + "reasoning": true + }, { "id": "deepinfra/hy3", "name": "Hy3 (DeepInfra)", @@ -36504,6 +37291,21 @@ "output_limit": 32768, "tool_call": true }, + { + "id": "novita/mimo-v2.5", + "name": "MiMo V2.5 (NovitaAI)", + "cost": { + "input": 0.168, + "output": 0.336, + "cache_read": 0.0034 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true + }, { "id": "novita/llama-3.3-70b-instruct", "name": "Llama 3.3 70B Instruct (NovitaAI)", @@ -36774,6 +37576,19 @@ "output_limit": 8192, "image": true }, + { + "id": "novita/mimo-v2.5-pro", + "name": "MiMo V2.5 Pro (NovitaAI)", + "cost": { + "input": 0.522, + "output": 1.044, + "cache_read": 0.0043 + }, + "context": 1048576, + "output_limit": 131072, + "reasoning": true, + "tool_call": true + }, { "id": "novita/ernie-4.5-vl-424b-a47b", "name": "ERNIE 4.5 VL 424B A47B (NovitaAI)", @@ -37685,17 +38500,6 @@ "structured_output": true, "image": true }, - { - "id": "openai/gpt-4o-search-preview", - "name": "GPT-4o Search Preview (OpenAI)", - "cost": { - "input": 2.5, - "output": 10 - }, - "context": 128000, - "output_limit": 16384, - "image": true - }, { "id": "openai/gpt-4.1", "name": "GPT-4.1 (OpenAI)", @@ -37770,17 +38574,6 @@ "output_limit": 100000, "structured_output": true }, - { - "id": "openai/gpt-4o-mini-search-preview", - "name": "GPT-4o Mini Search Preview (OpenAI)", - "cost": { - "input": 0.15, - "output": 0.6 - }, - "context": 128000, - "output_limit": 16384, - "image": true - }, { "id": "openai/gpt-5.2-pro", "name": "GPT-5.2 Pro (OpenAI)", @@ -38400,6 +39193,102 @@ "tool_call": true, "structured_output": true }, + { + "id": "azure-anthropic/claude-opus-4-7", + "name": "Claude Opus 4.7 (Azure Anthropic)", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "azure-anthropic/claude-opus-4-8", + "name": "Claude Opus 4.8 (Azure Anthropic)", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "azure-anthropic/claude-sonnet-5", + "name": "Claude Sonnet 5 (Azure Anthropic)", + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "azure-anthropic/claude-fable-5", + "name": "Claude Fable 5 (Azure Anthropic)", + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "azure-anthropic/claude-opus-4-6", + "name": "Claude Opus 4.6 (Azure Anthropic)", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + { + "id": "azure-anthropic/claude-opus-5", + "name": "Claude Opus 5 (Azure Anthropic)", + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "context": 1000000, + "output_limit": 128000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "google-ai-studio/gemini-3.5-flash-lite", "name": "Gemini 3.5 Flash Lite (Google AI Studio)", @@ -39216,10 +40105,10 @@ "id": "alibaba/qwen3-max", "name": "Qwen3 Max (Alibaba Cloud)", "cost": { - "input": 3, - "output": 15, - "cache_read": 0.6, - "cache_write": 3.75 + "input": 1.2, + "output": 6, + "cache_read": 0.24, + "cache_write": 1.5 }, "context": 256000, "output_limit": 32800, @@ -39243,8 +40132,8 @@ "id": "alibaba/qwen3.6-35b-a3b", "name": "Qwen3.6 35B A3B (Alibaba Cloud)", "cost": { - "input": 0.248, - "output": 1.485 + "input": 0.375, + "output": 2.25 }, "context": 262144, "output_limit": 65536, @@ -39259,9 +40148,10 @@ "cost": { "input": 0.5, "output": 3, - "cache_read": 0.05 + "cache_read": 0.05, + "cache_write": 0.625 }, - "context": 262144, + "context": 1000000, "output_limit": 65536, "reasoning": true, "tool_call": true, @@ -39283,10 +40173,10 @@ "id": "alibaba/qwen3-coder-plus", "name": "Qwen3 Coder Plus (Alibaba Cloud)", "cost": { - "input": 6, - "output": 60, - "cache_read": 1.2, - "cache_write": 7.5 + "input": 1, + "output": 5, + "cache_read": 0.2, + "cache_write": 1.25 }, "context": 1000000, "output_limit": 66000, @@ -43216,8 +44106,8 @@ "id": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 }, "context": 1000000, @@ -44883,7 +45773,7 @@ }, { "id": "qwen/qwen3-next-80b-a3b-thinking", - "name": "Qwen3 Next 80B A3B Thinking", + "name": "Qwen3-Next 80B-A3B (Thinking)", "cost": { "input": 0.15, "output": 1.2 @@ -44967,7 +45857,7 @@ }, { "id": "qwen/qwen3-next-80b-a3b-instruct", - "name": "Qwen3 Next 80B A3B Instruct", + "name": "Qwen3-Next 80B-A3B Instruct", "cost": { "input": 0.144, "output": 0.574, @@ -45011,11 +45901,10 @@ "output": 0.688, "cache_read": 0.0172 }, - "context": 256000, - "output_limit": 64000, + "context": 131072, + "output_limit": 32768, "reasoning": true, - "tool_call": true, - "image": true + "tool_call": true }, { "id": "qwen/qwen3.5-122b-a10b", @@ -45489,7 +46378,7 @@ "cost": { "input": 0.67, "output": 3.4, - "cache_read": 0.17, + "cache_read": 0.19, "cache_write": 0 }, "context": 262144, @@ -45503,7 +46392,7 @@ "id": "moonshotai/Kimi-K2.6", "name": "Kimi K2.6", "cost": { - "input": 0.6, + "input": 0.57, "output": 3.41, "cache_read": 0.2, "cache_write": 0 @@ -45723,6 +46612,20 @@ "id": "aki-io", "name": "AKI.IO", "models": [ + { + "id": "deepseek-v4-flash-0731-284b", + "name": "DeepSeek V4 Flash 0731", + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.1 + }, + "context": 1048576, + "output_limit": 81920, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "gemma4-26b", "name": "Gemma 4 26B A4B IT", @@ -45777,12 +46680,28 @@ "tool_call": true, "image": true }, + { + "id": "qwen3.8-27b", + "name": "Qwen3.8 27B", + "cost": { + "input": 0.3, + "output": 2.2, + "cache_read": 0.1 + }, + "context": 262144, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, { "id": "kimi-k2.7-code-1100b", "name": "Kimi K2.7 Code", "cost": { "input": 0.86, - "output": 3 + "output": 3, + "cache_read": 0.18 }, "context": 262144, "output_limit": 81920, @@ -45790,18 +46709,6 @@ "tool_call": true, "structured_output": true, "image": true - }, - { - "id": "minimax-m2.5-230b", - "name": "MiniMax-M2.5", - "cost": { - "input": 0.25, - "output": 1.2 - }, - "context": 196608, - "output_limit": 65536, - "reasoning": true, - "tool_call": true } ] }, @@ -47010,9 +47917,9 @@ "id": "openai-gpt-5.6-luna", "name": "OpenAI GPT-5.6 Luna", "cost": { - "input": 0.2, - "output": 1.2, - "cache_read": 0.02 + "input": 0.1, + "output": 0.6, + "cache_read": 0.01 }, "context": 1050000, "input_limit": 922000, @@ -47125,9 +48032,9 @@ "id": "openai-gpt-5.6-terra", "name": "OpenAI GPT-5.6 Terra", "cost": { - "input": 2, - "output": 12, - "cache_read": 0.2 + "input": 1, + "output": 6, + "cache_read": 0.1 }, "context": 1050000, "input_limit": 922000, @@ -48085,9 +48992,9 @@ "id": "openai-gpt-5.6-sol", "name": "OpenAI GPT-5.6 Sol", "cost": { - "input": 5, - "output": 30, - "cache_read": 0.5 + "input": 2, + "output": 10, + "cache_read": 0.2 }, "context": 1050000, "input_limit": 922000, @@ -55262,6 +56169,20 @@ "tool_call": true, "structured_output": true }, + { + "id": "deepseek/deepseek-v4-flash-0731", + "name": "DeepSeek V4 Flash 0731", + "cost": { + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 + }, + "context": 1000000, + "output_limit": 384000, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "deepseek/deepseek-v4-pro-0423", "name": "DeepSeek V4 Pro 0423", @@ -63120,9 +64041,10 @@ "id": "gpt-5.6-sol", "name": "GPT-5.6 Sol", "cost": { - "input": 4.5, - "output": 27, - "cache_read": 0.45 + "input": 3.6, + "output": 18, + "cache_read": 0.36, + "cache_write": 4.5 }, "context": 1050000, "input_limit": 922000, @@ -65458,7 +66380,7 @@ "output": 4.3552, "cache_read": 0.206872 }, - "context": 256000, + "context": 262000, "output_limit": 16000, "reasoning": true, "tool_call": true, @@ -65525,9 +66447,9 @@ "id": "llama-3.3-70b-instruct", "name": "Llama-3.3-70B-Instruct", "cost": { - "input": 0.638, - "output": 0.768, - "cache_write": 0.319 + "input": 0.598, + "output": 0.738, + "cache_write": 0.299 }, "context": 128000, "output_limit": 12800, @@ -65579,9 +66501,9 @@ "id": "glm-5", "name": "GLM-5", "cost": { - "input": 0.91, - "output": 2.934, - "cache_write": 0.455 + "input": 0.86, + "output": 2.784, + "cache_write": 0.43 }, "context": 202752, "output_limit": 20275, @@ -65606,9 +66528,9 @@ "id": "minimax-m2.7", "name": "MiniMax-M2.7", "cost": { - "input": 0.408, - "output": 1.512, - "cache_write": 0.204 + "input": 0.41, + "output": 1.52, + "cache_write": 0.205 }, "context": 262100, "output_limit": 6553, @@ -65647,11 +66569,11 @@ "id": "gpt-oss-120b", "name": "GPT OSS 120B", "cost": { - "input": 0.188, - "output": 0.7, - "cache_write": 0.094 + "input": 0.178, + "output": 0.68, + "cache_write": 0.089 }, - "context": 131072, + "context": 128072, "output_limit": 13107, "reasoning": true, "tool_call": true, @@ -65757,9 +66679,9 @@ "id": "glm-5.1", "name": "GLM-5.1", "cost": { - "input": 1.36, - "output": 4.4, - "cache_write": 0.68 + "input": 1.332, + "output": 4.312, + "cache_write": 0.666 }, "context": 202750, "output_limit": 3276, @@ -65771,9 +66693,9 @@ "id": "deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.479072, - "output": 1.437216, - "cache_read": 0.015243 + "input": 0.44, + "output": 1.32, + "cache_read": 0.044 }, "context": 1048576, "output_limit": 384000, @@ -73710,6 +74632,19 @@ "output_limit": 262144, "reasoning": true }, + { + "id": "nvidia/nemotron-3.5-lightning-free", + "name": "Nemotron 3.5 Lightning 30B (Free)", + "cost": { + "input": 0, + "output": 0 + }, + "context": 1000000, + "output_limit": 32768, + "reasoning": true, + "tool_call": true, + "structured_output": true + }, { "id": "nvidia/nemotron-nano-12b-v2-vl", "name": "Nvidia Nemotron Nano 12B V2 VL", @@ -73738,12 +74673,11 @@ "id": "nvidia/nemotron-3.5-lightning", "name": "Nemotron 3.5 Lightning 30B", "cost": { - "input": 0.05, - "output": 0.2, - "cache_read": 0.01 + "input": 0, + "output": 0 }, - "context": 262144, - "output_limit": 131072, + "context": 1000000, + "output_limit": 32768, "reasoning": true, "tool_call": true, "structured_output": true @@ -73804,9 +74738,9 @@ "id": "deepseek/deepseek-v4-pro-0813", "name": "DeepSeek V4 Pro 0813", "cost": { - "input": 1.32, - "output": 3.96, - "cache_read": 0.132 + "input": 0.66, + "output": 1.98, + "cache_read": 0.066 }, "context": 1000000, "output_limit": 384000, @@ -73918,16 +74852,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "arcee-ai/trinity-mini", - "name": "Trinity Mini", - "cost": { - "input": 0.045, - "output": 0.15 - }, - "context": 131072, - "output_limit": 131072 - }, { "id": "arcee-ai/trinity-large-thinking", "name": "Trinity Large Thinking", @@ -75119,6 +76043,11 @@ "id": "bytedance/seedream-4.0", "name": "Seedream 4.0" }, + { + "id": "bytedance/seedance-2.0-mini", + "name": "Seedance 2.0 Mini", + "image": true + }, { "id": "bytedance/seedance-v1.0-pro-fast", "name": "Seedance v1.0 Pro Fast" @@ -75373,21 +76302,6 @@ "structured_output": true, "image": true }, - { - "id": "openai/o3-deep-research", - "name": "o3-deep-research", - "cost": { - "input": 10, - "output": 40, - "cache_read": 2.5 - }, - "context": 200000, - "input_limit": 100000, - "output_limit": 100000, - "reasoning": true, - "tool_call": true, - "image": true - }, { "id": "openai/gpt-5.4-pro", "name": "GPT 5.4 Pro", @@ -75791,17 +76705,6 @@ "id": "openai/gpt-realtime-whisper", "name": "gpt-realtime-whisper" }, - { - "id": "openai/gpt-4o-mini-search-preview", - "name": "GPT 4o Mini Search Preview", - "cost": { - "input": 0.15, - "output": 0.6 - }, - "context": 128000, - "input_limit": 111616, - "output_limit": 16384 - }, { "id": "openai/gpt-5.2-pro", "name": "GPT 5.2 ", @@ -77102,30 +78005,6 @@ "output_limit": 4096, "tool_call": true }, - { - "id": "mistral/magistral-medium", - "name": "Magistral Medium (latest)", - "cost": { - "input": 2, - "output": 5 - }, - "context": 128000, - "output_limit": 16384, - "reasoning": true, - "tool_call": true - }, - { - "id": "mistral/magistral-small", - "name": "Magistral Small", - "cost": { - "input": 0.5, - "output": 1.5 - }, - "context": 128000, - "output_limit": 128000, - "reasoning": true, - "tool_call": true - }, { "id": "mistral/ministral-3b", "name": "Ministral 3B (latest)", @@ -77927,7 +78806,9 @@ }, "context": 1048576, "output_limit": 384000, - "reasoning": true + "reasoning": true, + "tool_call": true, + "structured_output": true }, { "id": "deepinfra/deepseek-ai/DeepSeek-V3", @@ -79690,8 +80571,8 @@ "id": "qwen/deepseek-v4-pro-0813", "name": "DeepSeek V4 Pro 0813", "cost": { - "input": 1.1616, - "output": 3.4848 + "input": 0.627, + "output": 1.881 }, "context": 1000000, "output_limit": 384000, @@ -79848,8 +80729,8 @@ "id": "qwen/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.352, - "output": 1.056 + "input": 0.176, + "output": 0.528 }, "context": 1000000, "output_limit": 384000, @@ -80009,8 +80890,8 @@ "id": "ionos/openai/gpt-oss-120b", "name": "GPT OSS 120B", "cost": { - "input": 0.175485, - "output": 0.760435 + "input": 0.17496, + "output": 0.75816 }, "context": 131072, "output_limit": 32768, @@ -80020,8 +80901,8 @@ "id": "ionos/meta-llama/Llama-3.3-70B-Instruct", "name": "Llama-3.3-70B-Instruct", "cost": { - "input": 0.760435, - "output": 0.760435 + "input": 0.75816, + "output": 0.75816 }, "context": 128000, "output_limit": 4096 @@ -80030,8 +80911,8 @@ "id": "scaleway/llama-3.3-70b-instruct", "name": "Llama-3.3-70B-Instruct", "cost": { - "input": 1.05291, - "output": 1.05291 + "input": 1.04976, + "output": 1.04976 }, "context": 128000, "output_limit": 4096, @@ -80041,8 +80922,8 @@ "id": "scaleway/gpt-oss-120b", "name": "GPT OSS 120B", "cost": { - "input": 0.175485, - "output": 0.70194 + "input": 0.17496, + "output": 0.69984 }, "context": 128000, "output_limit": 32768, @@ -80053,8 +80934,8 @@ "id": "scaleway/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.46796, - "output": 0.93592 + "input": 0.46656, + "output": 0.93312 }, "context": 256000, "output_limit": 384000, @@ -80257,28 +81138,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "amazon/nvidia.nemotron-nano-9b-v2", - "name": "Nemotron Nano 9B v2", - "cost": { - "input": 0.06, - "output": 0.23 - }, - "context": 128000, - "output_limit": 131072, - "reasoning": true - }, - { - "id": "amazon/nvidia.nemotron-nano-9b-v2@us", - "name": "Nemotron Nano 9B v2 (US)", - "cost": { - "input": 0.06, - "output": 0.23 - }, - "context": 128000, - "output_limit": 131072, - "reasoning": true - }, { "id": "cerebras/gpt-oss-120b", "name": "GPT OSS 120B", @@ -82620,7 +83479,7 @@ "output": 0.28, "cache_read": 0.0028 }, - "context": 1000000, + "context": 1048576, "output_limit": 131072, "reasoning": true, "tool_call": true, @@ -83622,17 +84481,6 @@ "image": true, "video": true }, - { - "id": "gpt-4o-search-preview", - "name": "GPT-4o Search Preview", - "cost": { - "input": 2.5, - "output": 10 - }, - "context": 128000, - "output_limit": 16384, - "image": true - }, { "id": "qwen3-next-80b-a3b-thinking", "name": "Qwen3-Next 80B-A3B (Thinking)", @@ -84155,7 +85003,7 @@ "cache_read": 0.05, "cache_write": 0.625 }, - "context": 262144, + "context": 1000000, "output_limit": 65536, "reasoning": true, "tool_call": true, @@ -84234,17 +85082,6 @@ "tool_call": true, "image": true }, - { - "id": "gpt-4o-mini-search-preview", - "name": "GPT-4o Mini Search Preview", - "cost": { - "input": 0.15, - "output": 0.6 - }, - "context": 128000, - "output_limit": 16384, - "image": true - }, { "id": "ministral-14b-2512", "name": "Ministral 14B", @@ -84382,7 +85219,7 @@ "output": 0.87, "cache_read": 0.0036 }, - "context": 1000000, + "context": 1048576, "output_limit": 131072, "reasoning": true, "tool_call": true @@ -84444,10 +85281,10 @@ "id": "qwen3-coder-plus", "name": "Qwen3 Coder Plus", "cost": { - "input": 6, - "output": 60, - "cache_read": 1.2, - "cache_write": 7.5 + "input": 1, + "output": 5, + "cache_read": 0.2, + "cache_write": 1.25 }, "context": 1000000, "output_limit": 65536, @@ -84855,9 +85692,9 @@ "id": "deepseek-ai/DeepSeek-V4-Flash-0731-TEE", "name": "DeepSeek V4 Flash 0731 TEE", "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.013999999999999999 + "input": 0.44, + "output": 1.32, + "cache_read": 0.04399999999999999 }, "context": 1048576, "output_limit": 131072, @@ -84941,9 +85778,9 @@ "id": "Qwen/Qwen3.8-27B-TEE", "name": "Qwen3.8 27B TEE", "cost": { - "input": 0.4, - "output": 3, - "cache_read": 0.039999999999999994 + "input": 0.35, + "output": 2.75, + "cache_read": 0.03499999999999999 }, "context": 262144, "output_limit": 65536, @@ -85018,20 +85855,6 @@ "image": true, "video": true }, - { - "id": "glm-4.7", - "name": "GLM-4.7", - "cost": { - "input": 0.25, - "output": 1.1, - "cache_read": 0.05, - "cache_write": 0 - }, - "context": 202752, - "output_limit": 202752, - "reasoning": true, - "tool_call": true - }, { "id": "deepseek-v4-flash", "name": "DeepSeek V4 Flash", @@ -85139,36 +85962,6 @@ "context": 229376, "output_limit": 229376 }, - { - "id": "kimi-k2.5-lightning", - "name": "Kimi K2.5 (Lightning)", - "cost": { - "input": 1, - "output": 3, - "cache_read": 0.2 - }, - "context": 131072, - "output_limit": 32768, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true, - "video": true - }, - { - "id": "glm-5", - "name": "GLM-5", - "cost": { - "input": 0.48, - "output": 1.9, - "cache_read": 0.1, - "cache_write": 0 - }, - "context": 202752, - "output_limit": 202752, - "reasoning": true, - "tool_call": true - }, { "id": "greg-rp", "name": "Greg (Roleplay)", @@ -85192,22 +85985,6 @@ "output_limit": 229376, "image": true }, - { - "id": "kimi-k2.5", - "name": "Kimi K2.5", - "cost": { - "input": 0.35, - "output": 1.7, - "cache_read": 0.07 - }, - "context": 262144, - "output_limit": 262144, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true, - "video": true - }, { "id": "glm-5.2", "name": "GLM-5.2", @@ -85238,20 +86015,6 @@ "image": true, "video": true }, - { - "id": "minimax-m2.5", - "name": "MiniMax-M2.5", - "cost": { - "input": 0.11, - "output": 0.95, - "cache_read": 0.02, - "cache_write": 0.375 - }, - "context": 204800, - "output_limit": 131072, - "reasoning": true, - "tool_call": true - }, { "id": "qwen3.6-27b", "name": "Qwen3.6 27B", @@ -85268,6 +86031,22 @@ "image": true, "video": true }, + { + "id": "qwen3.8-27b", + "name": "Qwen3.8 27B", + "cost": { + "input": 0.25, + "output": 2.1, + "cache_read": 0.06 + }, + "context": 262144, + "output_limit": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true + }, { "id": "qwen3.5-9b", "name": "Qwen3.5 9B", @@ -85326,20 +86105,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "glm-4.7-flash", - "name": "GLM-4.7-Flash", - "cost": { - "input": 0.04, - "output": 0.3, - "cache_read": 0.008, - "cache_write": 0 - }, - "context": 202752, - "output_limit": 131072, - "reasoning": true, - "tool_call": true - }, { "id": "kimi-k2.6", "name": "Kimi K2.6", @@ -85620,7 +86385,8 @@ "output_limit": 32768, "reasoning": true, "tool_call": true, - "structured_output": true + "structured_output": true, + "image": true } ] }, @@ -87766,9 +88532,9 @@ "id": "tencent/hy3", "name": "Hy3", "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.14, + "output": 0.58, + "cache_read": 0.035 }, "context": 262144, "output_limit": 128000, @@ -87789,6 +88555,17 @@ "reasoning": true, "tool_call": true }, + { + "id": "tencent/hy-mt2-7b", + "name": "Tencent: Hy-MT2-7B", + "cost": { + "input": 0.074, + "output": 0.295 + }, + "context": 8192, + "output_limit": 4096, + "structured_output": true + }, { "id": "~anthropic/claude-haiku-latest", "name": "Anthropic Claude Haiku Latest", @@ -88074,7 +88851,7 @@ "output": 0.65 }, "context": 6144, - "output_limit": 6144, + "output_limit": 4096, "structured_output": true }, { @@ -88204,7 +88981,7 @@ "cache_read": 0.26 }, "context": 1048576, - "output_limit": 131072, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true @@ -88245,8 +89022,8 @@ "output": 4.4, "cache_read": 0.26 }, - "context": 200000, - "output_limit": 128000, + "context": 202752, + "output_limit": 202752, "reasoning": true, "tool_call": true, "structured_output": true @@ -88442,12 +89219,12 @@ "id": "deepseek/deepseek-v4-flash-0731", "name": "DeepSeek V4 Flash 0731", "cost": { - "input": 0.14, - "output": 0.28, + "input": 0.44, + "output": 1.32, "cache_read": 0.028 }, "context": 1048576, - "output_limit": 384000, + "output_limit": 131072, "reasoning": true, "tool_call": true, "structured_output": true @@ -88456,9 +89233,9 @@ "id": "deepseek/deepseek-v4-flash-vision-exp", "name": "DeepSeek V4 Flash Vision Exp", "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 }, "context": 1048576, "output_limit": 384000, @@ -88523,8 +89300,8 @@ "id": "google/gemma-4-26b-a4b-it", "name": "Gemma 4 26B A4B IT", "cost": { - "input": 0.05, - "output": 0.25 + "input": 0.042, + "output": 0.22 }, "context": 262144, "output_limit": 16384, @@ -91001,8 +91778,8 @@ "input": 0.13, "output": 0.52 }, - "context": 131072, - "output_limit": 8192, + "context": 40960, + "output_limit": 16384, "reasoning": true, "tool_call": true }, @@ -91014,7 +91791,7 @@ "output": 2.34 }, "context": 262144, - "output_limit": 65536, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -91311,7 +92088,7 @@ "output": 2.7 }, "context": 262144, - "output_limit": 262144, + "output_limit": 81920, "reasoning": true, "tool_call": true, "structured_output": true, @@ -91334,10 +92111,10 @@ "id": "qwen/qwen3.8-27b", "name": "Qwen3.8 27B", "cost": { - "input": 0.575, - "output": 3.45, - "cache_read": 0.115, - "cache_write": 0.71875 + "input": 0.425, + "output": 2.55, + "cache_read": 0.085, + "cache_write": 0.53125 }, "context": 262144, "output_limit": 131072, @@ -91427,7 +92204,7 @@ "output": 2.08 }, "context": 262144, - "output_limit": 65536, + "output_limit": 262144, "reasoning": true, "tool_call": true, "structured_output": true, @@ -91715,8 +92492,8 @@ "input": 0.4, "output": 0.4 }, - "context": 1024000, - "output_limit": 1024000, + "context": 32768, + "output_limit": 32768, "tool_call": true, "structured_output": true }, @@ -91847,7 +92624,6 @@ "output_limit": 262144, "reasoning": true, "tool_call": true, - "structured_output": true, "image": true }, { @@ -91857,7 +92633,7 @@ "input": 0, "output": 0 }, - "context": 262144, + "context": 1048576, "output_limit": 262144, "reasoning": true, "tool_call": true, @@ -91884,7 +92660,7 @@ "input": 0, "output": 0 }, - "context": 262144, + "context": 1048576, "output_limit": 262144, "reasoning": true, "tool_call": true, @@ -91904,9 +92680,9 @@ "id": "~deepseek/deepseek-v4-flash-latest", "name": "DeepSeek V4 Flash Latest", "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.02 + "input": 0.035, + "output": 0.12, + "cache_read": 0.01 }, "context": 1048576, "output_limit": 1048576, @@ -91914,19 +92690,6 @@ "tool_call": true, "structured_output": true }, - { - "id": "inclusionai/ring-2.6-1t", - "name": "inclusionAI: Ring-2.6-1T (retires Aug 24)", - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - }, - "context": 262144, - "output_limit": 65536, - "reasoning": true, - "tool_call": true - }, { "id": "inclusionai/ling-3.0-flash", "name": "Ling-3.0-flash", @@ -91940,32 +92703,6 @@ "reasoning": true, "tool_call": true }, - { - "id": "inclusionai/ling-2.6-1t", - "name": "inclusionAI: Ling-2.6-1T (retires Aug 24)", - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - }, - "context": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, - { - "id": "inclusionai/ling-2.6-flash", - "name": "inclusionAI: Ling-2.6-flash (retires Aug 24)", - "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 - }, - "context": 262144, - "output_limit": 32768, - "tool_call": true, - "structured_output": true - }, { "id": "meta-llama/llama-3.2-3b-instruct", "name": "Meta: Llama 3.2 3B Instruct", @@ -92092,8 +92829,9 @@ "id": "mistralai/mistral-nemo", "name": "Mistral Nemo", "cost": { - "input": 0.019, - "output": 0.03 + "input": 0.165, + "output": 0.165, + "cache_read": 0.0165 }, "context": 131072, "output_limit": 16384, @@ -92125,6 +92863,19 @@ "output_limit": 128000, "structured_output": true }, + { + "id": "mistralai/devstral-2512", + "name": "Devstral 2", + "cost": { + "input": 0.44, + "output": 2.2, + "cache_read": 0.044 + }, + "context": 262144, + "output_limit": 262144, + "tool_call": true, + "structured_output": true + }, { "id": "mistralai/mistral-small-2603", "name": "Mistral Small 4", @@ -92144,8 +92895,9 @@ "id": "mistralai/mistral-small-3.2-24b-instruct", "name": "Mistral: Mistral Small 3.2 24B", "cost": { - "input": 0.075, - "output": 0.2 + "input": 0.11, + "output": 0.33, + "cache_read": 0.011 }, "context": 128000, "output_limit": 16384, @@ -92679,7 +93431,7 @@ "output": 1.2, "cache_read": 0.06 }, - "context": 204800, + "context": 196608, "output_limit": 131072, "reasoning": true, "tool_call": true, diff --git a/src/lib/models-dev.json b/src/lib/models-dev.json index 9afc7a2..3560dba 100644 --- a/src/lib/models-dev.json +++ b/src/lib/models-dev.json @@ -1,5 +1,5 @@ { - "last_updated": "2026-08-22", + "last_updated": "2026-08-25", "hpc-ai/deepseek/deepseek-v4-flash": { "name": "DeepSeek V4 Flash", "context": 1048576, @@ -3330,6 +3330,19 @@ "output": 0 } }, + "nvidia/moonshotai/kimi-k3": { + "name": "Kimi K3", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0, + "output": 0 + } + }, "nvidia/moonshotai/kimi-k2-instruct-0905": { "name": "Kimi K2 0905", "context": 262144, @@ -3415,6 +3428,17 @@ "cache_read": 0.003625 } }, + "nvidia/deepseek-ai/deepseek-v4-flash-0731": { + "name": "DeepSeek V4 Flash 0731", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0, + "output": 0 + } + }, "nvidia/stepfun-ai/step-3.5-flash": { "name": "Step 3.5 Flash", "context": 256000, @@ -5443,6 +5467,18 @@ "cache_read": 0.2 } }, + "nano-gpt/Gemma-4-31B-MeroMero-v2": { + "name": "Gemma 4 31B MeroMero v2", + "context": 65536, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + } + }, "nano-gpt/gemini-3-pro-image-preview": { "name": "Gemini 3 Pro Image", "context": 1048756, @@ -5492,8 +5528,8 @@ "context": 128000, "cost": { "input": 0.4, - "output": 0.4, - "cache_read": 0.2 + "output": 1.8, + "cache_read": 0.4 } }, "nano-gpt/gemini-2.5-flash-preview-04-17:thinking": { @@ -6793,6 +6829,18 @@ "cache_read": 7.865 } }, + "nano-gpt/Gemma-4-31B-MeroMero-v2:thinking": { + "name": "Gemma 4 31B MeroMero v2 Thinking", + "context": 65536, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + } + }, "nano-gpt/gemini-2.5-flash-preview-05-20:thinking": { "name": "Gemini 2.5 Flash 0520 Thinking", "context": 1048000, @@ -7845,9 +7893,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 } }, "nano-gpt/deepseek/deepseek-v4-pro-0813:thinking": { @@ -7996,16 +8044,32 @@ "cache_write": 0.083333 } }, - "nano-gpt/google/gemini-flash-latest": { - "name": "Gemini Flash Latest", - "context": 1048756, + "nano-gpt/google/gemma-4-26b-a4b-uncensored:thinking": { + "name": "Gemma 4 26B A4B Uncensored Thinking", + "context": 131072, "reasoning": true, + "tool_call": true, + "structured_output": true, "image": true, "cost": { - "input": 0.75, - "output": 3.75, - "cache_read": 0.075, - "cache_write": 0.041667 + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + } + }, + "nano-gpt/google/gemini-flash-latest": { + "name": "Gemini Flash Latest", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.375, + "output": 1.875, + "cache_read": 0.0375, + "cache_write": 0.020833 } }, "nano-gpt/google/gemini-3.5-flash": { @@ -8077,6 +8141,19 @@ "cache_write": 0.375 } }, + "nano-gpt/google/gemma-4-26b-a4b-uncensored": { + "name": "Gemma 4 26B A4B Uncensored", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.08, + "output": 0.33, + "cache_read": 0.04 + } + }, "nano-gpt/google/gemma-4-31b-it:thinking": { "name": "Gemma 4 31B Thinking", "context": 262144, @@ -9134,10 +9211,10 @@ "structured_output": true, "image": true, "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 } }, "nano-gpt/openai/o3-deep-research": { @@ -9325,10 +9402,10 @@ "structured_output": true, "image": true, "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 } }, "nano-gpt/openai/o4-mini-deep-research": { @@ -9420,10 +9497,10 @@ "structured_output": true, "image": true, "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 } }, "nano-gpt/openai/gpt-4.1": { @@ -9545,10 +9622,10 @@ "structured_output": true, "image": true, "cost": { - "input": 2.5, - "output": 15, - "cache_read": 0.25, - "cache_write": 3.125 + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 } }, "nano-gpt/openai/gpt-4o-mini-search-preview": { @@ -9813,6 +9890,19 @@ "cache_read": 0.1 } }, + "nano-gpt/ornith-ai/ornith-1.5-397b": { + "name": "Ornith 1.5 397B", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.9, + "output": 3.6, + "cache_read": 0.045 + } + }, "nano-gpt/ornith-ai/ornith-1.5-35b-a3b": { "name": "Ornith 1.5 35B", "context": 262144, @@ -9823,7 +9913,7 @@ "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.01 + "cache_read": 0.05 } }, "nano-gpt/ornith-ai/ornith-1.5-35b-a3b:thinking": { @@ -9836,7 +9926,46 @@ "cost": { "input": 0.1, "output": 0.4, - "cache_read": 0.01 + "cache_read": 0.05 + } + }, + "nano-gpt/ornith-ai/ornith-1.5-9b:thinking": { + "name": "Ornith 1.5 9B Thinking", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.1, + "cache_read": 0.025 + } + }, + "nano-gpt/ornith-ai/ornith-1.5-9b": { + "name": "Ornith 1.5 9B", + "context": 131072, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.05, + "output": 0.1, + "cache_read": 0.025 + } + }, + "nano-gpt/ornith-ai/ornith-1.5-397b:thinking": { + "name": "Ornith 1.5 397B Thinking", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.9, + "output": 3.6, + "cache_read": 0.045 } }, "nano-gpt/shisa-ai/shisa-v2.1-llama3.3-70b": { @@ -9975,6 +10104,19 @@ "cache_read": 0.065 } }, + "nano-gpt/qwen/qwen3.8-27b-obliterated": { + "name": "Qwen 3.8 27B Obliterated", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.18, + "output": 0.5, + "cache_read": 0.075 + } + }, "nano-gpt/qwen/Qwen3-VL-235B-A22B-Instruct": { "name": "Qwen3 VL 235B A22B Instruct", "context": 128000, @@ -10080,18 +10222,6 @@ "cache_read": 0.235 } }, - "nano-gpt/qwen/qwen3.8-27b-uncensored": { - "name": "Qwen 3.8 27B Uncensored", - "context": 131072, - "tool_call": true, - "structured_output": true, - "image": true, - "cost": { - "input": 0.18, - "output": 0.5, - "cache_read": 0.075 - } - }, "nano-gpt/qwen/qwen3.5-plus-thinking": { "name": "Qwen3.5 Plus Thinking", "context": 983616, @@ -10189,6 +10319,7 @@ "nano-gpt/qwen/qwen3.6-35b-a3b-uncensored": { "name": "Qwen 3.6 35B A3B Uncensored", "context": 65536, + "reasoning": true, "tool_call": true, "structured_output": true, "image": true, @@ -10210,6 +10341,32 @@ "cache_read": 0.056 } }, + "nano-gpt/qwen/qwen3.6-35b-a3b-uncensored:thinking": { + "name": "Qwen 3.6 35B A3B Uncensored Thinking", + "context": 65536, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.15, + "output": 0.5, + "cache_read": 0.075 + } + }, + "nano-gpt/qwen/qwen3.8-27b-obliterated:thinking": { + "name": "Qwen 3.8 27B Obliterated Thinking", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.18, + "output": 0.5, + "cache_read": 0.075 + } + }, "nano-gpt/qwen/qwen3-coder-plus": { "name": "Qwen3 Coder Plus", "context": 128000, @@ -10911,18 +11068,6 @@ "cache_read": 1.2495 } }, - "nano-gpt/inclusionai/ring-2.6-1t": { - "name": "Ring 2.6 1T", - "context": 262144, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - } - }, "nano-gpt/inclusionai/ling-3.0-flash": { "name": "Ling 3.0 Flash", "context": 262144, @@ -10933,17 +11078,6 @@ "cache_read": 0.015 } }, - "nano-gpt/inclusionai/ling-2.6-1t": { - "name": "Ling 2.6 1T", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - } - }, "nano-gpt/inclusionai/ling-3.0-flash:thinking": { "name": "Ling 3.0 Flash Thinking", "context": 262144, @@ -10955,17 +11089,6 @@ "cache_read": 0.015 } }, - "nano-gpt/inclusionai/ling-2.6-flash": { - "name": "Ling 2.6 Flash", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 - } - }, "nano-gpt/mistral/mistral-medium-3.5:thinking": { "name": "Mistral Medium 3.5 Thinking", "context": 256000, @@ -11240,15 +11363,6 @@ "cache_read": 0.255 } }, - "nano-gpt/amazon/nova-micro-v1": { - "name": "Amazon Nova Micro 1.0", - "context": 128000, - "cost": { - "input": 0.0357, - "output": 0.1394, - "cache_read": 0.01785 - } - }, "nano-gpt/amazon/nova-lite-v1": { "name": "Amazon Nova Lite 1.0", "context": 300000, @@ -11637,6 +11751,20 @@ "cache_read": 0.075 } }, + "nano-gpt/TEE/qwen3.8-27b": { + "name": "Qwen3.8 27B TEE", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.4, + "output": 3, + "cache_read": 0.15 + } + }, "nano-gpt/TEE/qwen3.5-27b": { "name": "Qwen3.5 27B TEE", "context": 262144, @@ -13868,6 +13996,28 @@ "cache_write": 0 } }, + "agentrouter/claude-opus-4-8": { + "name": "Claude Opus 4.8", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true + }, + "agentrouter/gpt-5.6-sol": { + "name": "GPT-5.6 Sol", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true + }, + "agentrouter/claude-opus-5": { + "name": "Claude Opus 5", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "image": true + }, "google/gemini-3.1-flash-tts-preview": { "name": "Gemini 3.1 Flash TTS Preview", "context": 8192, @@ -17650,6 +17800,15 @@ "cache_read": 0.033 } }, + "openrouter/tencent/hy-mt2-7b": { + "name": "Hy-MT2-7B", + "context": 8192, + "structured_output": true, + "cost": { + "input": 0.074, + "output": 0.295 + } + }, "openrouter/~anthropic/claude-haiku-latest": { "name": "Anthropic Claude Haiku Latest", "context": 200000, @@ -17765,18 +17924,6 @@ "cache_read": 0.04 } }, - "openrouter/nvidia/nemotron-nano-12b-v2-vl:free": { - "name": "Nemotron Nano 12B 2 VL (free)", - "context": 128000, - "reasoning": true, - "tool_call": true, - "image": true, - "video": true, - "cost": { - "input": 0, - "output": 0 - } - }, "openrouter/nvidia/nemotron-3-ultra-550b-a55b": { "name": "Nemotron 3 Ultra 550B A55B", "context": 512288, @@ -17831,27 +17978,6 @@ "output": 0 } }, - "openrouter/nvidia/nemotron-3-nano-30b-a3b:free": { - "name": "Nemotron 3 Nano 30B A3B (free)", - "context": 256000, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0, - "output": 0 - } - }, - "openrouter/nvidia/nemotron-nano-9b-v2:free": { - "name": "Nemotron Nano 9B V2 (free)", - "context": 128000, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0, - "output": 0 - } - }, "openrouter/~openai/gpt-latest": { "name": "OpenAI GPT Latest", "context": 1050000, @@ -18047,9 +18173,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.966, - "output": 3.036, - "cache_read": 0.1932 + "input": 1.19, + "output": 3.74, + "cache_read": 0.221 } }, "openrouter/z-ai/glm-4.6v": { @@ -18083,9 +18209,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.966, - "output": 3.036, - "cache_read": 0.1794 + "input": 1.26, + "output": 3.96, + "cache_read": 0.234 } }, "openrouter/z-ai/glm-4.7-flash": { @@ -18141,9 +18267,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.07406, - "output": 0.14812, - "cache_read": 0.014812 + "input": 0.088606, + "output": 0.177212, + "cache_read": 0.017721 } }, "openrouter/deepseek/deepseek-v4-pro-0813": { @@ -18153,9 +18279,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.188, - "output": 3.564, - "cache_read": 0.0396 + "input": 1.122, + "output": 3.366, + "cache_read": 0.0374 } }, "openrouter/deepseek/deepseek-v4-pro": { @@ -18165,9 +18291,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.481458, - "output": 0.962916, - "cache_read": 0.040122 + "input": 0.790308, + "output": 1.580616, + "cache_read": 0.065859 } }, "openrouter/deepseek/deepseek-v3.2": { @@ -18253,9 +18379,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.08, - "output": 0.18, - "cache_read": 0.016 + "input": 0.14, + "output": 0.28, + "cache_read": 0.028 } }, "openrouter/deepseek/deepseek-v4-flash-vision-exp": { @@ -18265,9 +18391,9 @@ "tool_call": true, "image": true, "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 } }, "openrouter/arcee-ai/trinity-large-thinking": { @@ -18699,8 +18825,8 @@ "structured_output": true, "image": true, "cost": { - "input": 0.3, - "output": 1.1, + "input": 0.35, + "output": 1.5, "cache_read": 0.04 } }, @@ -19027,7 +19153,7 @@ "cost": { "input": 0.67, "output": 3.4, - "cache_read": 0.17 + "cache_read": 0.19 } }, "openrouter/moonshotai/kimi-k3": { @@ -19061,9 +19187,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.45, - "output": 2.25, - "cache_read": 0.07 + "input": 0.6, + "output": 3, + "cache_read": 0.1 } }, "openrouter/moonshotai/kimi-k2-0905": { @@ -19096,9 +19222,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.5415, - "output": 2.28, - "cache_read": 0.0912 + "input": 0.95, + "output": 4, + "cache_read": 0.16 } }, "openrouter/anthropic/claude-opus-4.8": { @@ -19727,9 +19853,8 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.03, - "output": 0.17, - "cache_read": 0.03 + "input": 0.037, + "output": 0.17 } }, "openrouter/openai/gpt-4.1-nano": { @@ -20285,7 +20410,7 @@ }, "openrouter/qwen/qwen3-235b-a22b-thinking-2507": { "name": "Qwen3 235B A22B Thinking 2507", - "context": 262144, + "context": 131072, "reasoning": true, "tool_call": true, "cost": { @@ -20347,8 +20472,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.13, - "output": 0.52 + "input": 0.12, + "output": 0.5 } }, "openrouter/qwen/qwen3.5-397b-a17b": { @@ -20360,8 +20485,9 @@ "image": true, "video": true, "cost": { - "input": 0.39, - "output": 2.34 + "input": 0.5, + "output": 3.6, + "cache_read": 0.3 } }, "openrouter/qwen/qwen-plus": { @@ -20614,9 +20740,8 @@ "image": true, "video": true, "cost": { - "input": 0.6, - "output": 3.6, - "cache_read": 0.12 + "input": 0.32, + "output": 3.2 } }, "openrouter/qwen/qwen3-next-80b-a3b-instruct": { @@ -20639,8 +20764,8 @@ "image": true, "video": true, "cost": { - "input": 0.45, - "output": 3.2, + "input": 0.4, + "output": 3, "cache_read": 0.05 } }, @@ -21000,7 +21125,6 @@ "context": 1048576, "reasoning": true, "tool_call": true, - "structured_output": true, "image": true, "cost": { "input": 0.45, @@ -21010,7 +21134,7 @@ }, "openrouter/thinkingmachines/inkling:free": { "name": "Inkling (free)", - "context": 262144, + "context": 1048576, "reasoning": true, "tool_call": true, "image": true, @@ -21033,7 +21157,7 @@ }, "openrouter/thinkingmachines/inkling-small:free": { "name": "Inkling Small (free)", - "context": 262144, + "context": 1048576, "reasoning": true, "tool_call": true, "image": true, @@ -21057,20 +21181,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.02 - } - }, - "openrouter/inclusionai/ring-2.6-1t": { - "name": "Ring-2.6-1T", - "context": 262144, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.075, - "output": 0.625, - "cache_read": 0.015 + "input": 0.035, + "output": 0.12, + "cache_read": 0.01 } }, "openrouter/inclusionai/ling-3.0-flash": { @@ -21084,28 +21197,6 @@ "cache_read": 0.0042 } }, - "openrouter/inclusionai/ling-2.6-1t": { - "name": "Ling-2.6-1T", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.075, - "output": 0.625, - "cache_read": 0.015 - } - }, - "openrouter/inclusionai/ling-2.6-flash": { - "name": "Ling-2.6-flash", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.01, - "output": 0.03, - "cache_read": 0.002 - } - }, "openrouter/meta-llama/llama-3.2-3b-instruct": { "name": "Llama 3.2 3B Instruct", "context": 131072, @@ -21240,6 +21331,17 @@ "output": 0.11 } }, + "openrouter/mistralai/devstral-2512": { + "name": "Devstral 2", + "context": 262144, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.44, + "output": 2.2, + "cache_read": 0.044 + } + }, "openrouter/mistralai/mistral-small-2603": { "name": "Mistral Small 4", "context": 262144, @@ -25537,7 +25639,9 @@ "tool_call": true, "cost": { "input": 0.115, - "output": 0.287 + "output": 0.287, + "cache_read": 0.012, + "cache_write": 0.144 } }, "alibaba-cn/deepseek-v4-pro": { @@ -28970,6 +29074,17 @@ "cache_read": 0.08 } }, + "opencode-go/longcat-2.0": { + "name": "LongCat-2.0", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.006 + } + }, "opencode-go/qwen3.6-plus": { "name": "Qwen3.6 Plus", "context": 1000000, @@ -29057,6 +29172,522 @@ "cache_read": 0.007 } }, + "opper/vertexai/gemini-3.7-flash-eu": { + "name": "Gemini 3.7 Flash (EU)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075 + } + }, + "opper/vertexai/gemini-3.7-flash": { + "name": "Gemini 3.7 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.75, + "output": 3.75, + "cache_read": 0.075 + } + }, + "opper/meta/muse-spark-1.2": { + "name": "Muse Spark 1.2", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 1.25, + "output": 4.25, + "cache_read": 0.15 + } + }, + "opper/anthropic/claude-opus-4-7": { + "name": "Claude Opus 4.7", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/anthropic/claude-opus-4-8": { + "name": "Claude Opus 4.8", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/anthropic/claude-sonnet-5": { + "name": "Claude Sonnet 5", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "opper/anthropic/claude-opus-4-5": { + "name": "Claude Opus 4.5 (latest)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/anthropic/claude-sonnet-4-6": { + "name": "Claude Sonnet 4.6", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3, + "cache_write": 3.75 + } + }, + "opper/anthropic/claude-sonnet-4-5": { + "name": "Claude Sonnet 4.5 (latest)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3, + "cache_write": 3.75 + } + }, + "opper/anthropic/claude-fable-5": { + "name": "Claude Fable 5", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, + "opper/anthropic/claude-haiku-4-5": { + "name": "Claude Haiku 4.5 (latest)", + "context": 200000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1, + "output": 5, + "cache_read": 0.1, + "cache_write": 1.25 + } + }, + "opper/anthropic/claude-opus-4-6": { + "name": "Claude Opus 4.6", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/anthropic/claude-opus-5": { + "name": "Claude Opus 5", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/openai/gpt-5.3-chat-latest": { + "name": "GPT-5.3 Chat (latest)", + "context": 128000, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.75, + "output": 14, + "cache_read": 0.175 + } + }, + "opper/openai/gpt-5.5-pro": { + "name": "GPT-5.5 Pro", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 30, + "output": 180 + } + }, + "opper/openai/gpt-5.6-sol": { + "name": "GPT-5.6 Sol", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "opper/openai/gpt-5.4-pro": { + "name": "GPT-5.4 Pro", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 30, + "output": 180 + } + }, + "opper/openai/gpt-5.6-luna": { + "name": "GPT-5.6 Luna", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 1.2, + "cache_read": 0.02, + "cache_write": 0.25 + } + }, + "opper/openai/gpt-5.3-codex": { + "name": "GPT-5.3 Codex", + "context": 400000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.75, + "output": 14, + "cache_read": 0.175 + } + }, + "opper/openai/gpt-5.4-mini": { + "name": "GPT-5.4 mini", + "context": 400000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.75, + "output": 4.5, + "cache_read": 0.075 + } + }, + "opper/openai/gpt-5.5": { + "name": "GPT-5.5", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + } + }, + "opper/openai/gpt-5.6-terra": { + "name": "GPT-5.6 Terra", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "opper/openai/gpt-5.4": { + "name": "GPT-5.4", + "context": 1050000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2.5, + "output": 15, + "cache_read": 0.25 + } + }, + "opper/openai/gpt-5.4-nano": { + "name": "GPT-5.4 nano", + "context": 400000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.2, + "output": 1.25, + "cache_read": 0.02 + } + }, + "opper/xai/grok-4.6": { + "name": "Grok 4.6", + "context": 500000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.5 + } + }, + "opper/xai/grok-4.5": { + "name": "Grok 4.5", + "context": 500000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 6, + "cache_read": 0.3 + } + }, + "opper/xai/grok-build-0.1": { + "name": "Grok Build 0.1", + "context": 256000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1, + "output": 2, + "cache_read": 0.2 + } + }, + "opper/xai/grok-4.3": { + "name": "Grok 4.3", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 1.25, + "output": 2.5, + "cache_read": 0.2 + } + }, + "opper/perplexity/sonar": { + "name": "Sonar", + "context": 128000, + "cost": { + "input": 1, + "output": 1 + } + }, + "opper/perplexity/sonar-reasoning-pro": { + "name": "Sonar Reasoning Pro", + "context": 128000, + "reasoning": true, + "image": true, + "cost": { + "input": 2, + "output": 8 + } + }, + "opper/perplexity/sonar-pro": { + "name": "Sonar Pro", + "context": 200000, + "image": true, + "cost": { + "input": 3, + "output": 15 + } + }, + "opper/moonshot/kimi-k3": { + "name": "Kimi K3", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + } + }, + "opper/mistral/devstral-2512": { + "name": "Devstral 2", + "context": 262144, + "tool_call": true, + "cost": { + "input": 0.4, + "output": 2 + } + }, + "opper/mistral/mistral-small-2603": { + "name": "Mistral Small 4", + "context": 256000, + "reasoning": true, + "tool_call": true, + "image": true, + "cost": { + "input": 0.15, + "output": 0.6 + } + }, + "opper/mistral/mistral-large-2512": { + "name": "Mistral Large 3", + "context": 262144, + "tool_call": true, + "image": true, + "cost": { + "input": 0.5, + "output": 1.5 + } + }, + "opper/gemini/gemini-3.5-flash-lite": { + "name": "Gemini 3.5 Flash Lite", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.3, + "output": 2.5, + "cache_read": 0.03 + } + }, + "opper/gemini/gemini-3.1-pro-preview": { + "name": "Gemini 3.1 Pro Preview", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 2, + "output": 12, + "cache_read": 0.2 + } + }, + "opper/gemini/gemini-3.5-flash": { + "name": "Gemini 3.5 Flash", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 1.5, + "output": 9, + "cache_read": 0.15 + } + }, + "opper/gemini/gemini-3-flash-preview": { + "name": "Gemini 3 Flash Preview", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.5, + "output": 3, + "cache_read": 0.05 + } + }, + "opper/minimax/m3": { + "name": "MiniMax-M3", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.6, + "output": 2.4, + "cache_read": 0.12 + } + }, "xai/grok-imagine-video": { "name": "Grok Imagine Video", "context": 1024, @@ -29652,6 +30283,20 @@ "cache_read": 0.016 } }, + "llmgateway-providers/deepinfra/mimo-v2.5": { + "name": "MiMo V2.5 (DeepInfra)", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.4, + "output": 2, + "cache_read": 0.08 + } + }, "llmgateway-providers/deepinfra/nemotron-3-ultra-550b": { "name": "Nemotron 3 Ultra 550B (DeepInfra)", "context": 262144, @@ -29739,6 +30384,16 @@ "cache_read": 0.205 } }, + "llmgateway-providers/deepinfra/mimo-v2.5-pro": { + "name": "MiMo V2.5 Pro (DeepInfra)", + "context": 1048576, + "reasoning": true, + "cost": { + "input": 1, + "output": 3, + "cache_read": 0.2 + } + }, "llmgateway-providers/deepinfra/hy3": { "name": "Hy3 (DeepInfra)", "context": 262144, @@ -29927,6 +30582,19 @@ "output": 3 } }, + "llmgateway-providers/novita/mimo-v2.5": { + "name": "MiMo V2.5 (NovitaAI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "image": true, + "video": true, + "cost": { + "input": 0.168, + "output": 0.336, + "cache_read": 0.0034 + } + }, "llmgateway-providers/novita/llama-3.3-70b-instruct": { "name": "Llama 3.3 70B Instruct (NovitaAI)", "context": 131072, @@ -30153,6 +30821,17 @@ "output": 0.85 } }, + "llmgateway-providers/novita/mimo-v2.5-pro": { + "name": "MiMo V2.5 Pro (NovitaAI)", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "cost": { + "input": 0.522, + "output": 1.044, + "cache_read": 0.0043 + } + }, "llmgateway-providers/novita/ernie-4.5-vl-424b-a47b": { "name": "ERNIE 4.5 VL 424B A47B (NovitaAI)", "context": 123000, @@ -30922,15 +31601,6 @@ "cache_read": 0.5 } }, - "llmgateway-providers/openai/gpt-4o-search-preview": { - "name": "GPT-4o Search Preview (OpenAI)", - "context": 128000, - "image": true, - "cost": { - "input": 2.5, - "output": 10 - } - }, "llmgateway-providers/openai/gpt-4.1": { "name": "GPT-4.1 (OpenAI)", "context": 1000000, @@ -30993,15 +31663,6 @@ "cache_read": 0.55 } }, - "llmgateway-providers/openai/gpt-4o-mini-search-preview": { - "name": "GPT-4o Mini Search Preview (OpenAI)", - "context": 128000, - "image": true, - "cost": { - "input": 0.15, - "output": 0.6 - } - }, "llmgateway-providers/openai/gpt-5.2-pro": { "name": "GPT-5.2 Pro (OpenAI)", "context": 400000, @@ -31522,6 +32183,90 @@ "cache_read": 0.028 } }, + "llmgateway-providers/azure-anthropic/claude-opus-4-7": { + "name": "Claude Opus 4.7 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "llmgateway-providers/azure-anthropic/claude-opus-4-8": { + "name": "Claude Opus 4.8 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "llmgateway-providers/azure-anthropic/claude-sonnet-5": { + "name": "Claude Sonnet 5 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 2, + "output": 10, + "cache_read": 0.2, + "cache_write": 2.5 + } + }, + "llmgateway-providers/azure-anthropic/claude-fable-5": { + "name": "Claude Fable 5 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 10, + "output": 50, + "cache_read": 1, + "cache_write": 12.5 + } + }, + "llmgateway-providers/azure-anthropic/claude-opus-4-6": { + "name": "Claude Opus 4.6 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, + "llmgateway-providers/azure-anthropic/claude-opus-5": { + "name": "Claude Opus 5 (Azure Anthropic)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + } + }, "llmgateway-providers/google-ai-studio/gemini-3.5-flash-lite": { "name": "Gemini 3.5 Flash Lite (Google AI Studio)", "context": 1048576, @@ -32227,10 +32972,10 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 3, - "output": 15, - "cache_read": 0.6, - "cache_write": 3.75 + "input": 1.2, + "output": 6, + "cache_read": 0.24, + "cache_write": 1.5 } }, "llmgateway-providers/alibaba/glm-5.2": { @@ -32252,13 +32997,13 @@ "image": true, "video": true, "cost": { - "input": 0.248, - "output": 1.485 + "input": 0.375, + "output": 2.25 } }, "llmgateway-providers/alibaba/qwen3.6-plus": { "name": "Qwen3.6 Plus (Alibaba Cloud)", - "context": 262144, + "context": 1000000, "reasoning": true, "tool_call": true, "image": true, @@ -32266,7 +33011,8 @@ "cost": { "input": 0.5, "output": 3, - "cache_read": 0.05 + "cache_read": 0.05, + "cache_write": 0.625 } }, "llmgateway-providers/alibaba/qwen-coder-plus": { @@ -32283,10 +33029,10 @@ "context": 1000000, "tool_call": true, "cost": { - "input": 6, - "output": 60, - "cache_read": 1.2, - "cache_write": 7.5 + "input": 1, + "output": 5, + "cache_read": 0.2, + "cache_write": 1.25 } }, "llmgateway-providers/alibaba/qwen3-vl-flash": { @@ -35530,8 +36276,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.22, - "output": 0.66, + "input": 0.035, + "output": 0.07, "cache_read": 0.007 } }, @@ -36942,7 +37688,7 @@ } }, "merge-gateway/qwen/qwen3-next-80b-a3b-thinking": { - "name": "Qwen3 Next 80B A3B Thinking", + "name": "Qwen3-Next 80B-A3B (Thinking)", "context": 131072, "reasoning": true, "cost": { @@ -37012,7 +37758,7 @@ } }, "merge-gateway/qwen/qwen3-next-80b-a3b-instruct": { - "name": "Qwen3 Next 80B A3B Instruct", + "name": "Qwen3-Next 80B-A3B Instruct", "context": 131072, "tool_call": true, "cost": { @@ -37045,10 +37791,9 @@ }, "merge-gateway/qwen/qwen3.5-27b": { "name": "Qwen3.5 27B", - "context": 256000, + "context": 131072, "reasoning": true, "tool_call": true, - "image": true, "cost": { "input": 0.086, "output": 0.688, @@ -37455,7 +38200,7 @@ "cost": { "input": 0.67, "output": 3.4, - "cache_read": 0.17, + "cache_read": 0.19, "cache_write": 0 } }, @@ -37467,7 +38212,7 @@ "structured_output": true, "image": true, "cost": { - "input": 0.6, + "input": 0.57, "output": 3.41, "cache_read": 0.2, "cache_write": 0 @@ -37637,6 +38382,18 @@ "output": 0.18 } }, + "aki-io/deepseek-v4-flash-0731-284b": { + "name": "DeepSeek V4 Flash 0731", + "context": 1048576, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.2, + "output": 0.5, + "cache_read": 0.1 + } + }, "aki-io/gemma4-26b": { "name": "Gemma 4 26B A4B IT", "context": 256000, @@ -37683,6 +38440,19 @@ "output": 0.6 } }, + "aki-io/qwen3.8-27b": { + "name": "Qwen3.8 27B", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "cost": { + "input": 0.3, + "output": 2.2, + "cache_read": 0.1 + } + }, "aki-io/kimi-k2.7-code-1100b": { "name": "Kimi K2.7 Code", "context": 262144, @@ -37692,17 +38462,8 @@ "image": true, "cost": { "input": 0.86, - "output": 3 - } - }, - "aki-io/minimax-m2.5-230b": { - "name": "MiniMax-M2.5", - "context": 196608, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.25, - "output": 1.2 + "output": 3, + "cache_read": 0.18 } }, "stepfun/step-3.5-flash-2603": { @@ -38683,9 +39444,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.2, - "output": 1.2, - "cache_read": 0.02 + "input": 0.1, + "output": 0.6, + "cache_read": 0.01 } }, "digitalocean/gte-large-en-v1.5": { @@ -38781,9 +39542,9 @@ "structured_output": true, "image": true, "cost": { - "input": 2, - "output": 12, - "cache_read": 0.2 + "input": 1, + "output": 6, + "cache_read": 0.1 } }, "digitalocean/arcee-trinity-large-thinking": { @@ -39592,9 +40353,9 @@ "structured_output": true, "image": true, "cost": { - "input": 5, - "output": 30, - "cache_read": 0.5 + "input": 2, + "output": 10, + "cache_read": 0.2 } }, "digitalocean/openai-gpt-oss-20b": { @@ -45492,6 +46253,18 @@ "cache_read": 0.06 } }, + "ofox/deepseek/deepseek-v4-flash-0731": { + "name": "DeepSeek V4 Flash 0731", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 + } + }, "ofox/deepseek/deepseek-v4-pro-0423": { "name": "DeepSeek V4 Pro 0423", "context": 1000000, @@ -52081,9 +52854,10 @@ "structured_output": true, "image": true, "cost": { - "input": 4.5, - "output": 27, - "cache_read": 0.45 + "input": 3.6, + "output": 18, + "cache_read": 0.36, + "cache_write": 4.5 } }, "requesty/gpt-5@eu": { @@ -54049,7 +54823,7 @@ }, "hyper/kimi-k2.7-code": { "name": "Kimi K2.7 Code", - "context": 256000, + "context": 262000, "reasoning": true, "tool_call": true, "structured_output": true, @@ -54113,9 +54887,9 @@ "context": 128000, "tool_call": true, "cost": { - "input": 0.638, - "output": 0.768, - "cache_write": 0.319 + "input": 0.598, + "output": 0.738, + "cache_write": 0.299 } }, "hyper/deepseek-v4-pro-0813": { @@ -54160,9 +54934,9 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.91, - "output": 2.934, - "cache_write": 0.455 + "input": 0.86, + "output": 2.784, + "cache_write": 0.43 } }, "hyper/minimax-m3": { @@ -54183,9 +54957,9 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.408, - "output": 1.512, - "cache_write": 0.204 + "input": 0.41, + "output": 1.52, + "cache_write": 0.205 } }, "hyper/qwen3.8-max": { @@ -54214,14 +54988,14 @@ }, "hyper/gpt-oss-120b": { "name": "GPT OSS 120B", - "context": 131072, + "context": 128072, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.188, - "output": 0.7, - "cache_write": 0.094 + "input": 0.178, + "output": 0.68, + "cache_write": 0.089 } }, "hyper/qwen3.7-flash": { @@ -54312,9 +55086,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.36, - "output": 4.4, - "cache_write": 0.68 + "input": 1.332, + "output": 4.312, + "cache_write": 0.666 } }, "hyper/deepseek-v4-flash-0731": { @@ -54324,9 +55098,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.479072, - "output": 1.437216, - "cache_read": 0.015243 + "input": 0.44, + "output": 1.32, + "cache_read": 0.044 } }, "hyper/qwen3.6-flash": { @@ -60893,6 +61667,17 @@ "output": 0.24 } }, + "vercel/nvidia/nemotron-3.5-lightning-free": { + "name": "Nemotron 3.5 Lightning 30B (Free)", + "context": 1000000, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0, + "output": 0 + } + }, "vercel/nvidia/nemotron-nano-12b-v2-vl": { "name": "Nvidia Nemotron Nano 12B V2 VL", "context": 131072, @@ -60915,14 +61700,13 @@ }, "vercel/nvidia/nemotron-3.5-lightning": { "name": "Nemotron 3.5 Lightning 30B", - "context": 262144, + "context": 1000000, "reasoning": true, "tool_call": true, "structured_output": true, "cost": { - "input": 0.05, - "output": 0.2, - "cache_read": 0.01 + "input": 0, + "output": 0 } }, "vercel/nvidia/nemotron-3-ultra-550b-a55b": { @@ -60976,9 +61760,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.32, - "output": 3.96, - "cache_read": 0.132 + "input": 0.66, + "output": 1.98, + "cache_read": 0.066 } }, "vercel/deepseek/deepseek-v3.1": { @@ -61069,14 +61853,6 @@ "output": 5.4 } }, - "vercel/arcee-ai/trinity-mini": { - "name": "Trinity Mini", - "context": 131072, - "cost": { - "input": 0.045, - "output": 0.15 - } - }, "vercel/arcee-ai/trinity-large-thinking": { "name": "Trinity Large Thinking", "context": 262100, @@ -62067,6 +62843,10 @@ "vercel/bytedance/seedream-4.0": { "name": "Seedream 4.0" }, + "vercel/bytedance/seedance-2.0-mini": { + "name": "Seedance 2.0 Mini", + "image": true + }, "vercel/bytedance/seedance-v1.0-pro-fast": { "name": "Seedance v1.0 Pro Fast" }, @@ -62274,18 +63054,6 @@ "output": 80 } }, - "vercel/openai/o3-deep-research": { - "name": "o3-deep-research", - "context": 200000, - "reasoning": true, - "tool_call": true, - "image": true, - "cost": { - "input": 10, - "output": 40, - "cache_read": 2.5 - } - }, "vercel/openai/gpt-5.4-pro": { "name": "GPT 5.4 Pro", "context": 1050000, @@ -62609,14 +63377,6 @@ "vercel/openai/gpt-realtime-whisper": { "name": "gpt-realtime-whisper" }, - "vercel/openai/gpt-4o-mini-search-preview": { - "name": "GPT 4o Mini Search Preview", - "context": 128000, - "cost": { - "input": 0.15, - "output": 0.6 - } - }, "vercel/openai/gpt-5.2-pro": { "name": "GPT 5.2 ", "context": 400000, @@ -63694,26 +64454,6 @@ "output": 0.9 } }, - "vercel/mistral/magistral-medium": { - "name": "Magistral Medium (latest)", - "context": 128000, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 2, - "output": 5 - } - }, - "vercel/mistral/magistral-small": { - "name": "Magistral Small", - "context": 128000, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.5, - "output": 1.5 - } - }, "vercel/mistral/ministral-3b": { "name": "Ministral 3B (latest)", "context": 128000, @@ -64389,6 +65129,8 @@ "name": "DeepSeek V4 Pro 0813", "context": 1048576, "reasoning": true, + "tool_call": true, + "structured_output": true, "cost": { "input": 1.3, "output": 2.6, @@ -65901,8 +66643,8 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 1.1616, - "output": 3.4848 + "input": 0.627, + "output": 1.881 } }, "edenai/qwen/qwen3-coder-next": { @@ -66035,8 +66777,8 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.352, - "output": 1.056 + "input": 0.176, + "output": 0.528 } }, "edenai/qwen/qwen3-vl-235b-a22b-instruct": { @@ -66172,16 +66914,16 @@ "context": 131072, "reasoning": true, "cost": { - "input": 0.175485, - "output": 0.760435 + "input": 0.17496, + "output": 0.75816 } }, "edenai/ionos/meta-llama/Llama-3.3-70B-Instruct": { "name": "Llama-3.3-70B-Instruct", "context": 128000, "cost": { - "input": 0.760435, - "output": 0.760435 + "input": 0.75816, + "output": 0.75816 } }, "edenai/scaleway/llama-3.3-70b-instruct": { @@ -66189,8 +66931,8 @@ "context": 128000, "tool_call": true, "cost": { - "input": 1.05291, - "output": 1.05291 + "input": 1.04976, + "output": 1.04976 } }, "edenai/scaleway/gpt-oss-120b": { @@ -66199,8 +66941,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.175485, - "output": 0.70194 + "input": 0.17496, + "output": 0.69984 } }, "edenai/scaleway/deepseek-v4-flash-0731": { @@ -66209,8 +66951,8 @@ "reasoning": true, "tool_call": true, "cost": { - "input": 0.46796, - "output": 0.93592 + "input": 0.46656, + "output": 0.93312 } }, "edenai/mistral/mistral-small-latest": { @@ -66379,24 +67121,6 @@ "output": 0.4 } }, - "edenai/amazon/nvidia.nemotron-nano-9b-v2": { - "name": "Nemotron Nano 9B v2", - "context": 128000, - "reasoning": true, - "cost": { - "input": 0.06, - "output": 0.23 - } - }, - "edenai/amazon/nvidia.nemotron-nano-9b-v2@us": { - "name": "Nemotron Nano 9B v2 (US)", - "context": 128000, - "reasoning": true, - "cost": { - "input": 0.06, - "output": 0.23 - } - }, "edenai/cerebras/gpt-oss-120b": { "name": "GPT OSS 120B", "context": 131072, @@ -68352,7 +69076,7 @@ }, "llmgateway/mimo-v2.5": { "name": "MiMo-V2.5", - "context": 1000000, + "context": 1048576, "reasoning": true, "tool_call": true, "image": true, @@ -69205,15 +69929,6 @@ "cache_read": 0.03 } }, - "llmgateway/gpt-4o-search-preview": { - "name": "GPT-4o Search Preview", - "context": 128000, - "image": true, - "cost": { - "input": 2.5, - "output": 10 - } - }, "llmgateway/qwen3-next-80b-a3b-thinking": { "name": "Qwen3-Next 80B-A3B (Thinking)", "context": 131072, @@ -69652,7 +70367,7 @@ }, "llmgateway/qwen3.6-plus": { "name": "Qwen3.6 Plus", - "context": 262144, + "context": 1000000, "reasoning": true, "tool_call": true, "image": true, @@ -69726,15 +70441,6 @@ "output": 0.3 } }, - "llmgateway/gpt-4o-mini-search-preview": { - "name": "GPT-4o Mini Search Preview", - "context": 128000, - "image": true, - "cost": { - "input": 0.15, - "output": 0.6 - } - }, "llmgateway/ministral-14b-2512": { "name": "Ministral 14B", "context": 262144, @@ -69845,7 +70551,7 @@ }, "llmgateway/mimo-v2.5-pro": { "name": "MiMo-V2.5-Pro", - "context": 1000000, + "context": 1048576, "reasoning": true, "tool_call": true, "cost": { @@ -69904,10 +70610,10 @@ "context": 1000000, "tool_call": true, "cost": { - "input": 6, - "output": 60, - "cache_read": 1.2, - "cache_write": 7.5 + "input": 1, + "output": 5, + "cache_read": 0.2, + "cache_write": 1.25 } }, "llmgateway/claude-opus-4-6": { @@ -70253,9 +70959,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.013999999999999999 + "input": 0.44, + "output": 1.32, + "cache_read": 0.04399999999999999 } }, "chutes/deepseek-ai/DeepSeek-V3.2-TEE": { @@ -70328,9 +71034,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.4, - "output": 3, - "cache_read": 0.039999999999999994 + "input": 0.35, + "output": 2.75, + "cache_read": 0.03499999999999999 } }, "chutes/zai-org/GLM-5.2-TEE": { @@ -70385,18 +71091,6 @@ "cache_read": 0.25 } }, - "crof/glm-4.7": { - "name": "GLM-4.7", - "context": 202752, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.25, - "output": 1.1, - "cache_read": 0.05, - "cache_write": 0 - } - }, "crof/deepseek-v4-flash": { "name": "DeepSeek V4 Flash", "context": 1000000, @@ -70488,32 +71182,6 @@ "cache_read": 0.25 } }, - "crof/kimi-k2.5-lightning": { - "name": "Kimi K2.5 (Lightning)", - "context": 131072, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true, - "video": true, - "cost": { - "input": 1, - "output": 3, - "cache_read": 0.2 - } - }, - "crof/glm-5": { - "name": "GLM-5", - "context": 202752, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.48, - "output": 1.9, - "cache_read": 0.1, - "cache_write": 0 - } - }, "crof/greg-rp": { "name": "Greg (Roleplay)", "context": 229376, @@ -70533,20 +71201,6 @@ "cache_read": 0.01 } }, - "crof/kimi-k2.5": { - "name": "Kimi K2.5", - "context": 262144, - "reasoning": true, - "tool_call": true, - "structured_output": true, - "image": true, - "video": true, - "cost": { - "input": 0.35, - "output": 1.7, - "cache_read": 0.07 - } - }, "crof/glm-5.2": { "name": "GLM-5.2", "context": 1000000, @@ -70573,18 +71227,6 @@ "cache_read": 0.1 } }, - "crof/minimax-m2.5": { - "name": "MiniMax-M2.5", - "context": 204800, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.11, - "output": 0.95, - "cache_read": 0.02, - "cache_write": 0.375 - } - }, "crof/qwen3.6-27b": { "name": "Qwen3.6 27B", "context": 262144, @@ -70599,6 +71241,20 @@ "cache_read": 0.04 } }, + "crof/qwen3.8-27b": { + "name": "Qwen3.8 27B", + "context": 262144, + "reasoning": true, + "tool_call": true, + "structured_output": true, + "image": true, + "video": true, + "cost": { + "input": 0.25, + "output": 2.1, + "cache_read": 0.06 + } + }, "crof/qwen3.5-9b": { "name": "Qwen3.5 9B", "context": 262144, @@ -70649,18 +71305,6 @@ "cache_read": 0.003 } }, - "crof/glm-4.7-flash": { - "name": "GLM-4.7-Flash", - "context": 202752, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.04, - "output": 0.3, - "cache_read": 0.008, - "cache_write": 0 - } - }, "crof/kimi-k2.6": { "name": "Kimi K2.6", "context": 262144, @@ -70873,6 +71517,7 @@ "reasoning": true, "tool_call": true, "structured_output": true, + "image": true, "cost": { "input": 0.1, "output": 0.4, @@ -72641,9 +73286,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.14, + "output": 0.58, + "cache_read": 0.035 } }, "kilo/tencent/hy3:free": { @@ -72657,6 +73302,15 @@ "cache_read": 0 } }, + "kilo/tencent/hy-mt2-7b": { + "name": "Tencent: Hy-MT2-7B", + "context": 8192, + "structured_output": true, + "cost": { + "input": 0.074, + "output": 0.295 + } + }, "kilo/~anthropic/claude-haiku-latest": { "name": "Anthropic Claude Haiku Latest", "context": 200000, @@ -73041,7 +73695,7 @@ }, "kilo/z-ai/glm-5.1": { "name": "GLM-5.1", - "context": 200000, + "context": 202752, "reasoning": true, "tool_call": true, "structured_output": true, @@ -73217,8 +73871,8 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.14, - "output": 0.28, + "input": 0.44, + "output": 1.32, "cache_read": 0.028 } }, @@ -73229,9 +73883,9 @@ "tool_call": true, "image": true, "cost": { - "input": 0.22, - "output": 0.66, - "cache_read": 0.007 + "input": 0.44, + "output": 1.32, + "cache_read": 0.014 } }, "kilo/arcee-ai/trinity-large-thinking": { @@ -73288,8 +73942,8 @@ "image": true, "video": true, "cost": { - "input": 0.05, - "output": 0.25 + "input": 0.042, + "output": 0.22 } }, "kilo/google/gemini-3-pro-image": { @@ -75387,7 +76041,7 @@ }, "kilo/qwen/qwen3-30b-a3b": { "name": "Qwen3 30B A3B", - "context": 131072, + "context": 40960, "reasoning": true, "tool_call": true, "cost": { @@ -75679,10 +76333,10 @@ "image": true, "video": true, "cost": { - "input": 0.575, - "output": 3.45, - "cache_read": 0.115, - "cache_write": 0.71875 + "input": 0.425, + "output": 2.55, + "cache_read": 0.085, + "cache_write": 0.53125 } }, "kilo/qwen/qwen3.6-plus": { @@ -75994,7 +76648,7 @@ }, "kilo/thedrummer/unslopnemo-12b": { "name": "TheDrummer: UnslopNemo 12B", - "context": 1024000, + "context": 32768, "tool_call": true, "structured_output": true, "cost": { @@ -76106,7 +76760,6 @@ "context": 524288, "reasoning": true, "tool_call": true, - "structured_output": true, "image": true, "cost": { "input": 0.45, @@ -76116,7 +76769,7 @@ }, "kilo/thinkingmachines/inkling:free": { "name": "Thinking Machines: Inkling (free)", - "context": 262144, + "context": 1048576, "reasoning": true, "tool_call": true, "image": true, @@ -76139,7 +76792,7 @@ }, "kilo/thinkingmachines/inkling-small:free": { "name": "Thinking Machines: Inkling Small (free)", - "context": 262144, + "context": 1048576, "reasoning": true, "tool_call": true, "image": true, @@ -76163,20 +76816,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.065, - "output": 0.18, - "cache_read": 0.02 - } - }, - "kilo/inclusionai/ring-2.6-1t": { - "name": "inclusionAI: Ring-2.6-1T (retires Aug 24)", - "context": 262144, - "reasoning": true, - "tool_call": true, - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 + "input": 0.035, + "output": 0.12, + "cache_read": 0.01 } }, "kilo/inclusionai/ling-3.0-flash": { @@ -76190,28 +76832,6 @@ "cache_read": 0.012 } }, - "kilo/inclusionai/ling-2.6-1t": { - "name": "inclusionAI: Ling-2.6-1T (retires Aug 24)", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.3, - "output": 2.5, - "cache_read": 0.06 - } - }, - "kilo/inclusionai/ling-2.6-flash": { - "name": "inclusionAI: Ling-2.6-flash (retires Aug 24)", - "context": 262144, - "tool_call": true, - "structured_output": true, - "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 - } - }, "kilo/meta-llama/llama-3.2-3b-instruct": { "name": "Meta: Llama 3.2 3B Instruct", "context": 131072, @@ -76320,8 +76940,9 @@ "tool_call": true, "structured_output": true, "cost": { - "input": 0.019, - "output": 0.03 + "input": 0.165, + "output": 0.165, + "cache_read": 0.0165 } }, "kilo/mistralai/mistral-medium-3-5": { @@ -76345,6 +76966,17 @@ "output": 0.11 } }, + "kilo/mistralai/devstral-2512": { + "name": "Devstral 2", + "context": 262144, + "tool_call": true, + "structured_output": true, + "cost": { + "input": 0.44, + "output": 2.2, + "cache_read": 0.044 + } + }, "kilo/mistralai/mistral-small-2603": { "name": "Mistral Small 4", "context": 262144, @@ -76365,8 +76997,9 @@ "structured_output": true, "image": true, "cost": { - "input": 0.075, - "output": 0.2 + "input": 0.11, + "output": 0.33, + "cache_read": 0.011 } }, "kilo/mistralai/mistral-small-24b-instruct-2501": { @@ -76807,7 +77440,7 @@ }, "kilo/minimax/minimax-m2.7": { "name": "MiniMax-M2.7", - "context": 204800, + "context": 196608, "reasoning": true, "tool_call": true, "structured_output": true, diff --git a/src/lib/subagent-settings.ts b/src/lib/subagent-settings.ts index a9ebac2..3392b65 100644 --- a/src/lib/subagent-settings.ts +++ b/src/lib/subagent-settings.ts @@ -30,15 +30,25 @@ export interface ExperimentalFlagDef { envVar: string; } -/** Known experimental flags (Kimi Code v1 + v2 registries, merged). */ +/** Known experimental flags — mirrors the kimi-code v2 flag registry + * (the per-feature flag.ts files under packages/agent-core-v2/src: + * secondary-model, tool-select, persistence_minidb_readmodel, tower, + * subagent_fork, wait_for, auto_session_title). `acp-v2` was removed + * upstream and is dropped here. */ export const EXPERIMENTAL_FLAGS: ExperimentalFlagDef[] = [ { id: "secondary-model", envVar: "KIMI_CODE_EXPERIMENTAL_SECONDARY_MODEL" }, { id: "tool-select", envVar: "KIMI_CODE_EXPERIMENTAL_TOOL_SELECT" }, - { id: "acp-v2", envVar: "KIMI_CODE_EXPERIMENTAL_ACP_V2" }, { id: "persistence_minidb_readmodel", envVar: "KIMI_CODE_EXPERIMENTAL_PERSISTENCE_MINIDB_READMODEL", }, + { id: "tower", envVar: "KIMI_CODE_EXPERIMENTAL_TOWER" }, + { id: "subagent_fork", envVar: "KIMI_CODE_EXPERIMENTAL_SUBAGENT_FORK" }, + { id: "wait_for", envVar: "KIMI_CODE_EXPERIMENTAL_WAIT_FOR" }, + { + id: "auto_session_title", + envVar: "KIMI_CODE_EXPERIMENTAL_AUTO_SESSION_TITLE", + }, ]; export const EXPERIMENTAL_MASTER_ENV = "KIMI_CODE_EXPERIMENTAL_FLAG";