diff --git a/docs/architecture/baselines/renderer-application-boundaries-baseline.json b/docs/architecture/baselines/renderer-application-boundaries-baseline.json index 3e5cfcd4df..d3f3a0d353 100644 --- a/docs/architecture/baselines/renderer-application-boundaries-baseline.json +++ b/docs/architecture/baselines/renderer-application-boundaries-baseline.json @@ -720,7 +720,7 @@ }, { "file": "src/renderer/settings/main.ts", - "specifier": "@/i18n" + "specifier": "@/i18n/bootstrap" } ], "settingsToChatAppImportCount": 170 diff --git a/docs/architecture/settings-locale-lazy-loading/plan.md b/docs/architecture/settings-locale-lazy-loading/plan.md new file mode 100644 index 0000000000..4bf977fb59 --- /dev/null +++ b/docs/architecture/settings-locale-lazy-loading/plan.md @@ -0,0 +1,88 @@ +# 实施计划 + +## 模块边界 + +```text +config.getLanguage + │ + ▼ +renderer i18n bootstrap ──────── load en-US fallback + │ │ + ├──── normalize locale ────────┤ + │ ▼ + └────────────────────── load current locale + │ + ▼ + createI18n + app.mount + +config.language.changed / config.setLanguage + │ + ▼ +language store revision token → load → register → publish state +``` + +### 1. Locale registry 与复数规则 + +将复数规则移到无 messages 依赖的模块。`i18n/index.ts` 改为只提供支持 locale 类型、规范化函数、显式 +dynamic import registry 和带 Promise 缓存的 `loadLocaleMessages()`。别名规范化到完整 locale,未知值 +回退到 `en-US`。 + +每个 registry entry 使用固定 import 路径,确保 Vite 为 locale 生成可预测的异步 chunk,且不会通过 +变量路径打包额外模块。 + +### 2. Renderer bootstrap + +新增共享 `createRendererI18n()`: + +- 尝试调用注入的 `getLanguageState`;失败时使用 `en-US` 默认状态; +- 必定加载 `en-US`,当前 locale 不同时并行加载当前 locale; +- 当前 locale 加载失败时回退到 `en-US`; +- 只把实际加载成功的 messages 传给 `createI18n`; +- 返回 i18n 实例及最终启动状态,供测试和后续 store 初始化复用。 + +主窗口、Settings 和 floating 的入口都改为 async bootstrap,在挂载前创建 i18n。必须迁移所有静态 +聚合入口,否则任一多入口 renderer 都可能把 locale 重新提升到共享同步 chunk。floating 的运行时语言 +事件使用相同的 load/register/publish 顺序和 revision 保护。 + +### 3. Language store + +store 使用 `setLocaleMessage()` 注册动态结果。所有来自初始化、事件和设置 action 的状态统一进入 +`applyLanguageState()`: + +1. 分配递增 revision; +2. 加载规范化后的 locale; +3. 检查 revision 是否仍为最新; +4. 注册 messages; +5. 原子更新 locale、requested language 与方向。 + +`setLanguage` 的 route 返回值也进入同一路径,避免依赖事件到达顺序。加载失败保持上一个可用状态并 +记录错误;较早加载即使后完成,也不能覆盖较新状态。 + +### 4. 测试策略 + +- i18n loader:所有 locale 可解析、别名/未知值规范化、相同 locale Promise 缓存。 +- bootstrap:读取成功、IPC 失败、当前 locale import 失败时的 fallback messages 和最终 locale。 +- language store:先注册再切换、快速切换 last-write-wins、加载失败保持旧 locale、RTL 方向。 +- production build:检查 Settings 与主窗口同步入口不包含 20 份 locale,并存在独立 locale chunk。 + +## 风险与缓解 + +| 风险 | 缓解 | +| --- | --- | +| 首屏等待动态 import | 只加载当前 locale 与 fallback;应用内本地 chunk,无网络依赖 | +| 语言事件与 action response 重复 | loader Promise 缓存,统一 revision 应用路径 | +| import 失败导致白屏 | bootstrap 始终可退回静态可加载的 `en-US` 动态 chunk | +| 旧异步请求覆盖新选择 | revision token 在注册和状态发布前校验 | +| 构建器重新合并全部 locale | 两个 renderer 入口同时移除静态聚合,并检查 production manifest/chunks | + +## 验证命令 + +```bash +pnpm exec vitest --config vitest.config.renderer.ts test/renderer/i18n +pnpm run format +pnpm run i18n +pnpm run lint +pnpm run typecheck +pnpm run test:renderer +pnpm run build +``` diff --git a/docs/architecture/settings-locale-lazy-loading/spec.md b/docs/architecture/settings-locale-lazy-loading/spec.md new file mode 100644 index 0000000000..a09de63e54 --- /dev/null +++ b/docs/architecture/settings-locale-lazy-loading/spec.md @@ -0,0 +1,53 @@ +# Renderer 语言包按需加载 + +## 背景 + +`src/renderer/src/i18n/index.ts` 静态导入全部 20 个语言包,主窗口和 Settings +renderer 的入口又都同步导入该聚合对象。翻译资源约 5.4 MB,因此打开 Settings 时,即使用户只使用 +一个语言,也要解析所有语言资源;同时主窗口的静态导入会让构建器保留共享同步 chunk,单独修改 +Settings 入口无法稳定拆包。 + +语言 store 当前还会先切换 `locale`,再由现有全量 messages 隐式保证文案存在。改为动态加载后,必须 +明确保证 messages 注册完成后才发布 locale,并处理快速连续切换产生的异步竞态。 + +## 目标 + +1. 主窗口、Settings 和 floating renderer 启动时只加载当前 locale 与 `en-US` fallback,不再同步加载 + 全部语言。 +2. 其余语言通过明确的 loader registry 生成独立异步 chunk,并在首次使用后复用加载结果。 +3. renderer 挂载前读取主进程解析后的语言状态并完成首屏语言注册,避免默认语言闪烁或缺失 key。 +4. 运行时切换语言时先加载、注册 messages,再切换全局 locale;较早请求不得覆盖较新的请求。 +5. IPC 或当前语言加载失败时仍能使用本地 fallback 启动,不阻塞应用挂载。 +6. 保留现有复数规则、RTL 方向和 `system` 语言语义。 + +## 非目标 + +- 不拆分单个 locale 内部的功能域 JSON。 +- 不更改翻译内容、支持语言清单、主进程语言解析规则或设置界面布局。 +- 不新增网络请求;语言 chunk 仍来自应用打包资源。 +- 不修改主进程 IPC contract 或持久化格式。 + +## 验收标准 + +1. `src/renderer/src/i18n` 不再存在静态聚合所有 locale messages 的入口。 +2. 主窗口、Settings 和 floating renderer 使用同一套异步 bootstrap,并在 `app.mount()` 前得到可用 + i18n 实例。 +3. 当前 locale 与 `en-US` fallback 在首屏可用;读取语言状态失败时至少以 `en-US` 正常启动。 +4. 每个支持 locale 都可由 registry 加载;语言别名和未知 locale 有确定的规范化/fallback 行为。 +5. 快速连续切换时只有最后一次状态可以更新 locale、requested language 与方向。 +6. locale 加载失败不会把全局 locale 切到未注册 messages 的值。 +7. 单元测试覆盖 loader 缓存、bootstrap fallback、切换竞态与 RTL;production build 显示 locale 为异步 chunk, + Settings 同步入口不再包含全部语言资源。 +8. format、i18n、lint、typecheck 与相关 renderer tests 通过。 + +## 约束 + +- 保持 Vue 3 Composition API、Pinia 和 `vue-i18n` legacy false 模式。 +- loader registry 必须使用可被 Vite/Rollup 静态分析的显式动态 import。 +- startup fallback 不依赖 IPC,也不能重新静态导入完整 messages 聚合。 +- 不创建或同步 GitHub issue;此工作通过独立 PR 评审。 + +## 兼容性与回滚 + +语言设置仍由现有 `config.getLanguage` / `config.setLanguage` route 提供,数据格式不变。回滚时可恢复静态 +messages 聚合和同步 `createI18n`;不会留下用户数据迁移或版本兼容负担。 diff --git a/docs/architecture/settings-locale-lazy-loading/tasks.md b/docs/architecture/settings-locale-lazy-loading/tasks.md new file mode 100644 index 0000000000..7fb955e946 --- /dev/null +++ b/docs/architecture/settings-locale-lazy-loading/tasks.md @@ -0,0 +1,14 @@ +# 任务清单 + +- [x] 拆分 plural rules,并实现显式 locale loader registry、规范化与 Promise 缓存。 +- [x] 实现容错的 renderer i18n bootstrap,只注册当前 locale 和 `en-US` fallback。 +- [x] 将主窗口、Settings 与 floating renderer 入口迁移为挂载前异步 bootstrap。 +- [x] 更新 language store,保证 load → register → locale 的顺序并防止异步竞态。 +- [x] 删除 Settings App 中重复获取/设置 locale 的 watcher,保留方向同步 owner。 +- [x] 补 loader、bootstrap、language store fallback/竞态/RTL 单元测试(9 个用例通过)。 +- [x] production build 已生成 20 个独立 locale chunk;Settings 同步 JS 为 917,504 B,gzip + 300,498 B,未包含翻译正文。 +- [x] format、i18n、lint、typecheck、build 和定向 renderer tests 通过。完整 renderer suite 为 + 1333 passed / 16 failed:15 个失败来自 `origin/dev` 未改动的 `App.startup.test.ts` Promise mock, + 1 个全量并发超时的 `MemorySettings` 用例单跑 11/11 通过。 +- [x] 已提交、推送并创建以 `dev` 为 base 的独立 PR #2003。 diff --git a/resources/acp-registry/registry.json b/resources/acp-registry/registry.json index ac60011f61..bc291798c0 100644 --- a/resources/acp-registry/registry.json +++ b/resources/acp-registry/registry.json @@ -61,7 +61,7 @@ { "id": "auggie", "name": "Auggie CLI", - "version": "0.32.0", + "version": "0.33.0", "description": "Augment Code's powerful software agent, backed by industry-leading context engine", "repository": "https://github.com/augmentcode/auggie", "website": "https://www.augmentcode.com/", @@ -72,7 +72,7 @@ "icon": "https://cdn.agentclientprotocol.com/registry/v1/latest/auggie.svg", "distribution": { "npx": { - "package": "@augmentcode/auggie@0.32.0", + "package": "@augmentcode/auggie@0.33.0", "args": [ "--acp" ], @@ -122,7 +122,7 @@ { "id": "cline", "name": "Cline", - "version": "3.0.44", + "version": "3.0.46", "description": "Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more", "repository": "https://github.com/cline/cline", "website": "https://cline.bot/cli", @@ -133,7 +133,7 @@ "icon": "https://cdn.agentclientprotocol.com/registry/v1/latest/cline.svg", "distribution": { "npx": { - "package": "cline@3.0.44", + "package": "cline@3.0.46", "args": [ "--acp" ] @@ -408,7 +408,7 @@ { "id": "devin", "name": "Devin", - "version": "3000.1.27", + "version": "3000.2.17", "description": "Devin CLI coding agent by Cognition", "website": "https://docs.devin.ai/cli", "authors": [ @@ -419,42 +419,42 @@ "distribution": { "binary": { "darwin-aarch64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-aarch64-apple-darwin.tar.gz", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-aarch64-apple-darwin.tar.gz", "cmd": "./bin/devin", "args": [ "acp" ] }, "darwin-x86_64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-x86_64-apple-darwin.tar.gz", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-x86_64-apple-darwin.tar.gz", "cmd": "./bin/devin", "args": [ "acp" ] }, "linux-aarch64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-aarch64-unknown-linux.tar.gz", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-aarch64-unknown-linux.tar.gz", "cmd": "./bin/devin", "args": [ "acp" ] }, "linux-x86_64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-x86_64-unknown-linux.tar.gz", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-x86_64-unknown-linux.tar.gz", "cmd": "./bin/devin", "args": [ "acp" ] }, "windows-aarch64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-aarch64-pc-windows.zip", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-aarch64-pc-windows.zip", "cmd": "./bin\\devin.exe", "args": [ "acp" ] }, "windows-x86_64": { - "archive": "https://static.devin.ai/cli/3000.1.27/devin-3000.1.27-x86_64-pc-windows.zip", + "archive": "https://static.devin.ai/cli/3000.2.17/devin-3000.2.17-x86_64-pc-windows.zip", "cmd": "./bin\\devin.exe", "args": [ "acp" @@ -487,7 +487,7 @@ { "id": "dirac", "name": "Dirac", - "version": "0.4.17", + "version": "0.4.20", "description": "Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.", "repository": "https://github.com/dirac-run/dirac", "website": "https://dirac.run", @@ -498,7 +498,7 @@ "icon": "https://cdn.agentclientprotocol.com/registry/v1/latest/dirac.svg", "distribution": { "npx": { - "package": "dirac-cli@0.4.17", + "package": "dirac-cli@0.4.20", "args": [ "--acp" ] @@ -508,7 +508,7 @@ { "id": "factory-droid", "name": "Factory Droid", - "version": "0.174.0", + "version": "0.175.1", "description": "Factory Droid - AI coding agent powered by Factory AI", "website": "https://factory.ai/product/cli", "authors": [ @@ -517,7 +517,7 @@ "license": "proprietary", "distribution": { "npx": { - "package": "droid@0.174.0", + "package": "droid@0.175.1", "args": [ "exec", "--output-format", @@ -534,7 +534,7 @@ { "id": "fast-agent", "name": "fast-agent", - "version": "0.9.14", + "version": "0.9.17", "description": "Code and build agents with comprehensive multi-provider support", "repository": "https://github.com/evalstate/fast-agent", "website": "https://fast-agent.ai", @@ -544,7 +544,7 @@ "license": "Apache 2.0", "distribution": { "uvx": { - "package": "fast-agent-acp==0.9.14", + "package": "fast-agent-acp==0.9.17", "args": [ "-x" ] @@ -597,7 +597,7 @@ { "id": "glm-acp-agent", "name": "GLM Agent", - "version": "1.1.4", + "version": "1.2.0", "description": "ACP agent powered by Zhipu AI's GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.", "repository": "https://github.com/stefandevo/glm-acp-agent", "authors": [ @@ -607,7 +607,7 @@ "icon": "https://cdn.agentclientprotocol.com/registry/v1/latest/glm-acp-agent.svg", "distribution": { "npx": { - "package": "glm-acp-agent@1.1.4" + "package": "glm-acp-agent@1.2.0" } } }, @@ -671,7 +671,7 @@ { "id": "grok-build", "name": "Grok Build", - "version": "0.2.102", + "version": "0.2.106", "description": "xAI's coding agent and CLI", "website": "https://x.ai/cli", "authors": [ @@ -680,7 +680,7 @@ "license": "proprietary", "distribution": { "npx": { - "package": "@xai-official/grok@0.2.102", + "package": "@xai-official/grok@0.2.106", "args": [ "agent", "stdio" @@ -692,7 +692,7 @@ { "id": "harn", "name": "Harn", - "version": "0.10.22", + "version": "0.10.29", "description": "Harn runs .harn agent pipelines as a native ACP coding agent over stdio.", "repository": "https://github.com/burin-labs/harn", "website": "https://harnlang.com", @@ -703,49 +703,49 @@ "distribution": { "binary": { "darwin-aarch64": { - "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.22/harn-aarch64-apple-darwin.tar.gz", + "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.29/harn-aarch64-apple-darwin.tar.gz", "cmd": "./harn", "args": [ "serve", "acp" ], - "sha256": "ee2d2fb2172d893c656848b8c25c4b527b162c03cac9931667f6da4d7bc8da07" + "sha256": "f1bd0128d462f5c7adcda20ab11819f432fd10f9d0768f100b66cf5144203eae" }, "darwin-x86_64": { - "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.22/harn-x86_64-apple-darwin.tar.gz", + "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.29/harn-x86_64-apple-darwin.tar.gz", "cmd": "./harn", "args": [ "serve", "acp" ], - "sha256": "6a984d21eb6102bc9993ab89169a2acdc207e453ed88ef09157f1c6d4ed593b5" + "sha256": "5c4918686b1b81b64f3eb87d625908ec132304fcbe9e2736ec140e2d14f9d0fb" }, "linux-aarch64": { - "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.22/harn-aarch64-unknown-linux-gnu.tar.gz", + "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.29/harn-aarch64-unknown-linux-gnu.tar.gz", "cmd": "./harn", "args": [ "serve", "acp" ], - "sha256": "5d1d16000915e5d20cba00c794581890a44dccf5365a7ee729bc7248a37fddcf" + "sha256": "51f92f3b9d62052cf7b6e439be97f20f20b7102f8586bf91dcb4d7b5e1d02dff" }, "linux-x86_64": { - "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.22/harn-x86_64-unknown-linux-gnu.tar.gz", + "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.29/harn-x86_64-unknown-linux-gnu.tar.gz", "cmd": "./harn", "args": [ "serve", "acp" ], - "sha256": "ac36baa6ddf61e64ee5d499be8c35b461527756f5006dbab333bc518d7ce6fca" + "sha256": "6c1c2dfa9fbd14f3f3afe7715750ed4c41ebc0520a600ff295d0e7c2764bd9a7" }, "windows-x86_64": { - "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.22/harn-x86_64-pc-windows-msvc.zip", + "archive": "https://github.com/burin-labs/harn/releases/download/v0.10.29/harn-x86_64-pc-windows-msvc.zip", "cmd": "harn.exe", "args": [ "serve", "acp" ], - "sha256": "352727aa4be51be711a70838df0f30856b5e6ef79014737d3ebeb867d4b128c4" + "sha256": "5a437b3d2f32dac83f0a4052ef9769fed2640f8b3c3b8d6c32948b3b1107738c" } } }, @@ -946,7 +946,7 @@ { "id": "mistral-vibe", "name": "Mistral Vibe", - "version": "2.20.0", + "version": "2.21.0", "description": "Mistral's open-source coding assistant", "repository": "https://github.com/mistralai/mistral-vibe", "website": "https://mistral.ai/products/vibe", @@ -958,29 +958,29 @@ "distribution": { "binary": { "darwin-aarch64": { - "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.20.0/vibe-acp-darwin-aarch64-2.20.0.zip", + "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.21.0/vibe-acp-darwin-aarch64-2.21.0.zip", "cmd": "./vibe-acp", - "sha256": "7dbce5483566389334fcff40772c194004925767d8c3a68791b7e12dd0417264" + "sha256": "243973c7bd69d4c5701ac4b5ce047df8dd1cd269df97d0b5c8ddb7fb64c3fd36" }, "darwin-x86_64": { - "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.20.0/vibe-acp-darwin-x86_64-2.20.0.zip", + "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.21.0/vibe-acp-darwin-x86_64-2.21.0.zip", "cmd": "./vibe-acp", - "sha256": "f8d2aec921288c48ab9e19afbc9c23bd1449b7301570ca8b15a9c7845c767642" + "sha256": "77096fcf59c4369737ca77b1eb1cfede1dbf8d427bcc9e90f6f8bdbf45dae08b" }, "linux-aarch64": { - "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.20.0/vibe-acp-linux-aarch64-2.20.0.zip", + "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.21.0/vibe-acp-linux-aarch64-2.21.0.zip", "cmd": "./vibe-acp", - "sha256": "8b3847ea1c3206cfbb739c6ab6918c1856799bcd064b1581ca450c83db13fe65" + "sha256": "948d66eaa73d2c28d90b922cc6cc5afffb83a9aa4d50b4e3eaed811751238d56" }, "linux-x86_64": { - "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.20.0/vibe-acp-linux-x86_64-2.20.0.zip", + "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.21.0/vibe-acp-linux-x86_64-2.21.0.zip", "cmd": "./vibe-acp", - "sha256": "9467392eba45fcc209faa2a9443f5a9eaab8d2f476586e2ffacca9f1101f0297" + "sha256": "90792067c779f863b6c0d7dc6c5b06f50a9f82ac937cfd9276e35ad4e7d61690" }, "windows-x86_64": { - "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.20.0/vibe-acp-windows-x86_64-2.20.0.zip", + "archive": "https://github.com/mistralai/mistral-vibe/releases/download/v2.21.0/vibe-acp-windows-x86_64-2.21.0.zip", "cmd": "./vibe-acp.exe", - "sha256": "1772a7f3ff49ad9874318242d78e72459163fcb7f787f266f0fff3047d1b02c5" + "sha256": "4505cda1ff3d29c2493d1d1b261a84c677c1fb1106527b24d6ce9ca966b5f094" } } } @@ -988,7 +988,7 @@ { "id": "nova", "name": "Nova", - "version": "1.1.27", + "version": "1.1.28", "description": "Nova by Compass AI - a fully-fledged software engineer at your command", "repository": "https://github.com/Compass-Agentic-Platform/nova", "website": "https://www.compassap.ai/portfolio/nova.html", @@ -999,7 +999,7 @@ "icon": "https://cdn.agentclientprotocol.com/registry/v1/latest/nova.svg", "distribution": { "npx": { - "package": "@compass-ai/nova@1.1.27", + "package": "@compass-ai/nova@1.1.28", "args": [ "acp" ] @@ -1170,7 +1170,7 @@ { "id": "qwen-code", "name": "Qwen Code", - "version": "0.19.11", + "version": "0.20.0", "description": "Alibaba's Qwen coding assistant", "repository": "https://github.com/QwenLM/qwen-code", "website": "https://qwenlm.github.io/qwen-code-docs/en/users/overview", @@ -1180,7 +1180,7 @@ "license": "Apache-2.0", "distribution": { "npx": { - "package": "@qwen-code/qwen-code@0.19.11", + "package": "@qwen-code/qwen-code@0.20.0", "args": [ "--acp", "--experimental-skills" diff --git a/resources/model-db/providers.json b/resources/model-db/providers.json index 0370d123a8..3f41575edc 100644 --- a/resources/model-db/providers.json +++ b/resources/model-db/providers.json @@ -463,6 +463,44 @@ }, "type": "chat" }, + { + "id": "xiaomi/mimo-v2.5", + "name": "MiMo-V2.5", + "display_name": "MiMo-V2.5", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 131072 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "attachment": true, + "open_weights": true, + "knowledge": "2024-12", + "release_date": "2026-04-22", + "last_updated": "2026-04-22", + "cost": { + "input": 0.4, + "output": 2, + "cache_read": 0.08, + "cache_write": 0 + }, + "type": "chat" + }, { "id": "stepfun/step-3.7-flash", "name": "Step 3.7 Flash", @@ -614,9 +652,9 @@ "release_date": "2026-06-12", "last_updated": "2026-06-12", "cost": { - "input": 0.75, - "output": 3.5, - "cache_read": 0.16, + "input": 0.85, + "output": 3.8, + "cache_read": 0.17, "cache_write": 0 }, "type": "chat" @@ -667,6 +705,52 @@ "cache_write": 0 }, "type": "chat" + }, + { + "id": "deepseek/deepseek-v4-flash", + "name": "DeepSeek V4 Flash", + "display_name": "DeepSeek V4 Flash", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 1048576 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": false, + "open_weights": true, + "knowledge": "2025-05", + "release_date": "2026-04-24", + "last_updated": "2026-04-24", + "cost": { + "input": 0.5, + "output": 0.8, + "cache_read": 0.2, + "cache_write": 0 + }, + "type": "chat" } ] }, @@ -1066,7 +1150,7 @@ "cost": { "input": 2, "output": 6, - "cache_read": 0.5, + "cache_read": 0.3, "tiers": [ { "input": 4, @@ -8493,6 +8577,11 @@ "supported": true, "default": true }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, "attachment": true, "open_weights": false, "release_date": "2026-04-08", @@ -37398,46 +37487,9 @@ "doc": "https://www.kimi.com/code/docs/en/third-party-tools/other-coding-agents.html", "models": [ { - "id": "k2p5", - "name": "Kimi K2.5", - "display_name": "Kimi K2.5", - "modalities": { - "input": [ - "text", - "image", - "video" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 32768 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "attachment": false, - "open_weights": true, - "knowledge": "2025-01", - "release_date": "2026-01", - "last_updated": "2026-01", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0, - "cache_write": 0 - }, - "type": "chat" - }, - { - "id": "k2p7", - "name": "Kimi K2.7 Code", - "display_name": "Kimi K2.7 Code", + "id": "kimi-for-coding", + "name": "K2.7 Code", + "display_name": "K2.7 Code", "modalities": { "input": [ "text", @@ -37452,41 +37504,6 @@ "context": 262144, "output": 32768 }, - "temperature": false, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "attachment": true, - "open_weights": true, - "knowledge": "2025-01", - "release_date": "2026-06-12", - "last_updated": "2026-06-12", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0, - "cache_write": 0 - }, - "type": "chat" - }, - { - "id": "kimi-k2-thinking", - "name": "Kimi K2 Thinking", - "display_name": "Kimi K2 Thinking", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 32768 - }, "temperature": true, "tool_call": true, "reasoning": { @@ -37496,6 +37513,8 @@ "extra_capabilities": { "reasoning": { "supported": true, + "default_enabled": true, + "mode": "fixed", "interleaved": true, "summaries": true, "visibility": "summary", @@ -37506,9 +37525,9 @@ }, "attachment": false, "open_weights": true, - "knowledge": "2025-07", - "release_date": "2025-11", - "last_updated": "2025-12", + "knowledge": "2025-01", + "release_date": "2026-04", + "last_updated": "2026-04", "cost": { "input": 0, "output": 0, @@ -37572,7 +37591,7 @@ "context": 1048576, "output": 131072 }, - "temperature": true, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -37590,43 +37609,6 @@ }, "type": "chat" }, - { - "id": "k2p6", - "name": "Kimi K2.6", - "display_name": "Kimi K2.6", - "modalities": { - "input": [ - "text", - "image", - "video" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 32768 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "attachment": false, - "open_weights": true, - "knowledge": "2025-01", - "release_date": "2026-04", - "last_updated": "2026-04", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0, - "cache_write": 0 - }, - "type": "chat" - }, { "id": "kimi-k2.7-code", "name": "Kimi K2.7 Code", @@ -37726,56 +37708,6 @@ "cache_write": 0 }, "type": "chat" - }, - { - "id": "kimi-for-coding", - "name": "K2.7 Code", - "display_name": "K2.7 Code", - "modalities": { - "input": [ - "text", - "image", - "video" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 32768 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "fixed", - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "attachment": false, - "open_weights": true, - "knowledge": "2025-01", - "release_date": "2026-04", - "last_updated": "2026-04", - "cost": { - "input": 0, - "output": 0, - "cache_read": 0, - "cache_write": 0 - }, - "type": "chat" } ] }, @@ -39071,6 +39003,47 @@ }, "type": "chat" }, + { + "id": "moonshot/kimi-k3", + "name": "Kimi K3", + "display_name": "Kimi K3", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 1048576 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-16", + "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3, + "cache_write": 3 + }, + "type": "chat" + }, { "id": "moonshot/kimi-k2.6", "name": "Kimi K2.6", @@ -56315,6 +56288,46 @@ }, "type": "chat" }, + { + "id": "kimi-k3", + "name": "Kimi K3", + "display_name": "Kimi K3", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 131072 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-16", + "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "type": "chat" + }, { "id": "gpt-4", "name": "GPT-4", @@ -56551,6 +56564,11 @@ "supported": true, "default": true }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, "attachment": true, "open_weights": false, "release_date": "2026-04-08", @@ -62463,6 +62481,45 @@ }, "type": "chat" }, + { + "id": "kimi-k3", + "name": "Kimi K3", + "display_name": "Kimi K3", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1000000, + "output": 131072 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-16", + "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15 + }, + "type": "chat" + }, { "id": "muse-spark-1-1", "name": "Muse Spark 1.1", @@ -64431,6 +64488,11 @@ "supported": true, "default": true }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, "attachment": true, "open_weights": false, "release_date": "2026-04-08", @@ -75754,7 +75816,7 @@ "context": 1048576, "output": 131072 }, - "temperature": true, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -75775,6 +75837,11 @@ "open_weights": true, "release_date": "2026-07-16", "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, "type": "chat" }, { @@ -77066,6 +77133,45 @@ }, "type": "chat" }, + { + "id": "kimi-k3", + "name": "Kimi K3", + "display_name": "Kimi K3", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1000000, + "output": 131072 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": false, + "release_date": "2026-07-16", + "last_updated": "2026-07-17", + "cost": { + "input": 3.75, + "output": 18.75, + "cache_read": 0.375 + }, + "type": "chat" + }, { "id": "gemini-3-1-pro-preview", "name": "Gemini 3.1 Pro Preview", @@ -77306,6 +77412,41 @@ }, "type": "chat" }, + { + "id": "inkling", + "name": "Inkling", + "display_name": "Inkling", + "modalities": { + "input": [ + "text", + "image", + "audio" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1000000, + "output": 65536 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-16", + "last_updated": "2026-07-17", + "cost": { + "input": 1.25, + "output": 5.0625, + "cache_read": 0.2125 + }, + "type": "chat" + }, { "id": "zai-org-glm-4.7-flash", "name": "GLM 4.7 Flash", @@ -79487,12 +79628,12 @@ "cost": { "input": 2.27, "output": 6.8, - "cache_read": 0.57, + "cache_read": 0.34, "tiers": [ { "input": 4.53, "output": 13.6, - "cache_read": 1.13, + "cache_read": 0.68, "tier": { "type": "context", "size": 200000 @@ -79502,7 +79643,7 @@ "context_over_200k": { "input": 4.53, "output": 13.6, - "cache_read": 1.13 + "cache_read": 0.68 } }, "type": "chat" @@ -85974,7 +86115,7 @@ ] }, "limit": { - "context": 200000, + "context": 1000000, "output": 128000 }, "temperature": true, @@ -86769,7 +86910,7 @@ ] }, "limit": { - "context": 200000, + "context": 1000000, "output": 128000 }, "temperature": true, @@ -86810,7 +86951,7 @@ "open_weights": false, "knowledge": "2025-05-31", "release_date": "2026-02-05", - "last_updated": "2026-02-05", + "last_updated": "2026-07-17", "cost": { "input": 5, "output": 25, @@ -87778,7 +87919,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -87866,8 +88007,8 @@ ] }, "limit": { - "context": 128000, - "output": 8192 + "context": 1000000, + "output": 16384 }, "temperature": true, "tool_call": true, @@ -88271,7 +88412,7 @@ ] }, "limit": { - "context": 128000, + "context": 200000, "output": 16384 }, "tool_call": true, @@ -88338,7 +88479,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -88616,7 +88757,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -88727,8 +88868,8 @@ ] }, "limit": { - "context": 256000, - "output": 8000 + "context": 131072, + "output": 8192 }, "temperature": true, "tool_call": true, @@ -89717,7 +89858,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -93722,7 +93863,7 @@ ] }, "limit": { - "context": 200000, + "context": 1000000, "output": 128000 }, "temperature": true, @@ -94340,7 +94481,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -95870,8 +96011,8 @@ ] }, "limit": { - "context": 256000, - "output": 8000 + "context": 131072, + "output": 8192 }, "temperature": true, "tool_call": true, @@ -95960,7 +96101,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -96278,7 +96419,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -96367,7 +96508,7 @@ ] }, "limit": { - "context": 128000, + "context": 200000, "output": 16384 }, "tool_call": true, @@ -97058,8 +97199,8 @@ ] }, "limit": { - "context": 128000, - "output": 8192 + "context": 1000000, + "output": 16384 }, "temperature": true, "tool_call": true, @@ -97164,7 +97305,7 @@ ] }, "limit": { - "context": 272000, + "context": 400000, "output": 128000 }, "temperature": false, @@ -97609,7 +97750,7 @@ ] }, "limit": { - "context": 200000, + "context": 1000000, "output": 128000 }, "temperature": true, @@ -97650,7 +97791,7 @@ "open_weights": false, "knowledge": "2025-05-31", "release_date": "2026-02-05", - "last_updated": "2026-02-05", + "last_updated": "2026-07-17", "cost": { "input": 5, "output": 25, @@ -114909,11 +115050,13 @@ "input": 2.5, "output": 15, "cache_read": 0.25, + "cache_write": 3.125, "tiers": [ { "input": 5, "output": 22.5, "cache_read": 0.5, + "cache_write": 6.25, "tier": { "type": "context", "size": 272000 @@ -114923,7 +115066,8 @@ "context_over_200k": { "input": 5, "output": 22.5, - "cache_read": 0.5 + "cache_read": 0.5, + "cache_write": 6.25 } }, "type": "chat" @@ -115791,11 +115935,13 @@ "input": 1, "output": 6, "cache_read": 0.1, + "cache_write": 1.25, "tiers": [ { "input": 2, "output": 9, "cache_read": 0.2, + "cache_write": 2.5, "tier": { "type": "context", "size": 200000 @@ -115805,7 +115951,8 @@ "context_over_200k": { "input": 2, "output": 9, - "cache_read": 0.2 + "cache_read": 0.2, + "cache_write": 2.5 } }, "type": "chat" @@ -115924,11 +116071,13 @@ "input": 5, "output": 30, "cache_read": 0.5, + "cache_write": 6.25, "tiers": [ { "input": 10, "output": 45, "cache_read": 1, + "cache_write": 12.5, "tier": { "type": "context", "size": 272000 @@ -115938,7 +116087,8 @@ "context_over_200k": { "input": 10, "output": 45, - "cache_read": 1 + "cache_read": 1, + "cache_write": 12.5 } }, "type": "chat" @@ -121598,6 +121748,43 @@ }, "type": "chat" }, + { + "id": "MiniMaxAI/MiniMax-M3", + "name": "MiniMax-M3", + "display_name": "MiniMax-M3", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 1048576 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": false, + "open_weights": true, + "release_date": "2026-06-01", + "last_updated": "2026-06-01", + "cost": { + "input": 0.3, + "output": 1.2 + }, + "type": "chat" + }, { "id": "MiniMaxAI/MiniMax-M2.5-fast", "name": "MiniMax-M2.5-fast", @@ -121864,6 +122051,50 @@ }, "type": "chat" }, + { + "id": "moonshotai/Kimi-K2.7-Code", + "name": "Kimi K2.7 Code", + "display_name": "Kimi K2.7 Code", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 262144, + "output": 8000 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": false, + "open_weights": true, + "knowledge": "2025-01", + "release_date": "2026-06-12", + "last_updated": "2026-06-12", + "cost": { + "input": 0.95, + "output": 4 + }, + "type": "chat" + }, { "id": "moonshotai/Kimi-K2.5-fast", "name": "Kimi-K2.5-fast", @@ -129386,9 +129617,9 @@ "release_date": "2026-04-22", "last_updated": "2026-04-22", "cost": { - "input": 1.74, - "output": 3.48, - "cache_read": 0.0145 + "input": 0.435, + "output": 0.87, + "cache_read": 0.003625 }, "type": "chat" }, @@ -129489,8 +129720,8 @@ }, { "id": "kimi-k3", - "name": "Kimi K3", - "display_name": "Kimi K3", + "name": "Kimi K3 (2x usage)", + "display_name": "Kimi K3 (2x usage)", "modalities": { "input": [ "text", @@ -129505,7 +129736,7 @@ "context": 1048576, "output": 131072 }, - "temperature": true, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -129926,9 +130157,9 @@ "release_date": "2026-04-24", "last_updated": "2026-04-24", "cost": { - "input": 1.74, - "output": 3.48, - "cache_read": 0.0145 + "input": 0.435, + "output": 0.87, + "cache_read": 0.003625 }, "type": "chat" }, @@ -156566,7 +156797,7 @@ "context": 1048576, "output": 131072 }, - "temperature": true, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -156587,6 +156818,11 @@ "open_weights": true, "release_date": "2026-07-16", "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, "type": "chat" }, { @@ -158659,6 +158895,50 @@ }, "type": "chat" }, + { + "id": "thinkingmachines/inkling", + "name": "Inkling", + "display_name": "Inkling", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 32768 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-15", + "last_updated": "2026-07-15", + "cost": { + "input": 1, + "output": 4.05 + }, + "type": "chat" + }, { "id": "MiniMaxAI/MiniMax-M2.5", "name": "MiniMax-M2.5", @@ -173870,19 +174150,21 @@ "type": "chat" }, { - "id": "MiniMaxAI/MiniMax-M2.5", - "name": "MiniMax-M2.5", - "display_name": "MiniMax-M2.5", + "id": "thinkingmachines/Inkling", + "name": "Inkling", + "display_name": "Inkling", "modalities": { "input": [ - "text" + "text", + "image", + "audio" ], "output": [ "text" ] }, "limit": { - "context": 204800, + "context": 524288, "output": 131072 }, "temperature": true, @@ -173891,26 +174173,21 @@ "supported": true, "default": true }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "attachment": false, + "attachment": true, "open_weights": true, - "release_date": "2026-02-12", - "last_updated": "2026-02-12", + "release_date": "2026-07-15", + "last_updated": "2026-07-15", "cost": { - "input": 0.3, - "output": 1.2, - "cache_read": 0.06 + "input": 1, + "output": 4.05, + "cache_read": 0.17 }, "type": "chat" }, { - "id": "MiniMaxAI/MiniMax-M2.7", - "name": "MiniMax-M2.7", - "display_name": "MiniMax-M2.7", + "id": "MiniMaxAI/MiniMax-M2.5", + "name": "MiniMax-M2.5", + "display_name": "MiniMax-M2.5", "modalities": { "input": [ "text" @@ -173920,7 +174197,7 @@ ] }, "limit": { - "context": 202752, + "context": 204800, "output": 131072 }, "temperature": true, @@ -173929,60 +174206,15 @@ "supported": true, "default": true }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "attachment": false, - "open_weights": true, - "release_date": "2026-03-18", - "last_updated": "2026-03-18", - "cost": { - "input": 0.3, - "output": 1.2, - "cache_read": 0.06 - }, - "type": "chat" - }, - { - "id": "MiniMaxAI/MiniMax-M3", - "name": "MiniMax-M3", - "display_name": "MiniMax-M3", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 524288, - "output": 250000 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, "extra_capabilities": { "reasoning": { "supported": true } }, - "attachment": true, + "attachment": false, "open_weights": true, - "release_date": "2026-06-12", - "last_updated": "2026-06-12", + "release_date": "2026-02-12", + "last_updated": "2026-02-12", "cost": { "input": 0.3, "output": 1.2, @@ -173991,53 +174223,136 @@ "type": "chat" }, { - "id": "zai-org/GLM-5.2", - "name": "GLM-5.2", - "display_name": "GLM-5.2", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 164000 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "attachment": false, - "open_weights": true, - "release_date": "2026-06-16", - "last_updated": "2026-06-16", - "cost": { - "input": 1.4, - "output": 4.4, - "cache_read": 0.26 - }, - "type": "chat" - }, - { - "id": "zai-org/GLM-5", - "name": "GLM-5", - "display_name": "GLM-5", + "id": "MiniMaxAI/MiniMax-M2.7", + "name": "MiniMax-M2.7", + "display_name": "MiniMax-M2.7", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 202752, + "output": 131072 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": false, + "open_weights": true, + "release_date": "2026-03-18", + "last_updated": "2026-03-18", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + }, + "type": "chat" + }, + { + "id": "MiniMaxAI/MiniMax-M3", + "name": "MiniMax-M3", + "display_name": "MiniMax-M3", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 524288, + "output": 250000 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-06-12", + "last_updated": "2026-06-12", + "cost": { + "input": 0.3, + "output": 1.2, + "cache_read": 0.06 + }, + "type": "chat" + }, + { + "id": "zai-org/GLM-5.2", + "name": "GLM-5.2", + "display_name": "GLM-5.2", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 262144, + "output": 164000 + }, + "temperature": true, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": false, + "open_weights": true, + "release_date": "2026-06-16", + "last_updated": "2026-06-16", + "cost": { + "input": 1.4, + "output": 4.4, + "cache_read": 0.26 + }, + "type": "chat" + }, + { + "id": "zai-org/GLM-5", + "name": "GLM-5", + "display_name": "GLM-5", "modalities": { "input": [ "text" @@ -176199,38 +176514,6 @@ }, "type": "chat" }, - { - "id": "meta/llama-3.2-1b", - "name": "Llama 3.2 1B Instruct", - "display_name": "Llama 3.2 1B Instruct", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 128000, - "output": 8192 - }, - "temperature": true, - "tool_call": false, - "reasoning": { - "supported": false - }, - "attachment": false, - "open_weights": false, - "knowledge": "2023-12", - "release_date": "2024-09-25", - "last_updated": "2024-09-18", - "cost": { - "input": 0.1, - "output": 0.1 - }, - "type": "chat" - }, { "id": "meta/llama-3.1-70b", "name": "Llama 3.1 70B Instruct", @@ -176287,6 +176570,11 @@ "supported": true, "default": true }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, "attachment": false, "open_weights": false, "release_date": "2026-07-09", @@ -176298,104 +176586,6 @@ }, "type": "chat" }, - { - "id": "meta/llama-3.2-3b", - "name": "Llama 3.2 3B Instruct", - "display_name": "Llama 3.2 3B Instruct", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 128000, - "output": 8192 - }, - "temperature": true, - "tool_call": false, - "reasoning": { - "supported": false - }, - "attachment": false, - "open_weights": false, - "knowledge": "2023-12", - "release_date": "2024-09-25", - "last_updated": "2024-09-18", - "cost": { - "input": 0.15, - "output": 0.15 - }, - "type": "chat" - }, - { - "id": "meta/llama-3.2-11b", - "name": "Llama 3.2 11B Vision Instruct", - "display_name": "Llama 3.2 11B Vision Instruct", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 128000, - "output": 8192 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": false - }, - "attachment": true, - "open_weights": false, - "knowledge": "2023-12", - "release_date": "2024-09-25", - "last_updated": "2024-09-25", - "cost": { - "input": 0.16, - "output": 0.16 - }, - "type": "chat" - }, - { - "id": "meta/llama-3.2-90b", - "name": "Llama 3.2 90B Vision Instruct", - "display_name": "Llama 3.2 90B Vision Instruct", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 128000, - "output": 8192 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": false - }, - "attachment": true, - "open_weights": false, - "knowledge": "2023-12", - "release_date": "2024-09-25", - "last_updated": "2024-09-25", - "cost": { - "input": 0.72, - "output": 0.72 - }, - "type": "chat" - }, { "id": "meta/llama-4-scout", "name": "Llama-4-Scout-17B-16E-Instruct-FP8", @@ -179511,7 +179701,7 @@ "context": 1000000, "output": 131072 }, - "temperature": true, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -187394,6 +187584,52 @@ }, "type": "chat" }, + { + "id": "moonshotai/kimi-k3", + "name": "Kimi K3", + "display_name": "Kimi K3", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1048576, + "output": 131072 + }, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "attachment": true, + "open_weights": true, + "release_date": "2026-07-16", + "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "type": "chat" + }, { "id": "openai/o3", "name": "o3", @@ -227477,7 +227713,8 @@ "name": "Kimi K3", "display_name": "Kimi K3", "limit": { - "context": 1048576 + "context": 1048576, + "output": 1048576 }, "tool_call": true, "reasoning": { @@ -234938,6 +235175,36 @@ }, "type": "chat" }, + { + "id": "qwen3.8-max-preview", + "name": "qwen3.8-max-preview", + "display_name": "qwen3.8-max-preview", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 991000, + "output": 991000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.169, + "output": 0.507, + "cache_read": 0.0169 + }, + "type": "chat" + }, { "id": "claude-sonnet-5", "name": "claude-sonnet-5", @@ -234969,6 +235236,38 @@ }, "type": "chat" }, + { + "id": "muse-spark-1.1", + "name": "muse-spark-1.1", + "display_name": "muse-spark-1.1", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video" + ] + }, + "limit": { + "context": 1000000, + "output": 1000000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 1.375, + "output": 4.675 + }, + "type": "chat" + }, { "id": "gemini-3.1-flash-lite-image", "name": "gemini-3.1-flash-lite-image", @@ -235451,9 +235750,9 @@ } }, "cost": { - "input": 0.12, - "output": 0.439999, - "cache_read": 0.012 + "input": 0.24, + "output": 0.879998, + "cache_read": 0.024 }, "type": "chat" }, @@ -235519,70 +235818,6 @@ }, "type": "chat" }, - { - "id": "kimi-k2.7-code", - "name": "kimi-k2.7-code", - "display_name": "kimi-k2.7-code", - "modalities": { - "input": [ - "text", - "image", - "video" - ] - }, - "limit": { - "context": 262144, - "output": 262144 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0.95, - "output": 3.9995, - "cache_read": 0.160835 - }, - "type": "chat" - }, - { - "id": "kimi-k2.7-code-highspeed", - "name": "kimi-k2.7-code-highspeed", - "display_name": "kimi-k2.7-code-highspeed", - "modalities": { - "input": [ - "text", - "image", - "video" - ] - }, - "limit": { - "context": 262144, - "output": 262144 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 1.9, - "output": 7.999, - "cache_read": 0.32167 - }, - "type": "chat" - }, { "id": "gemini-3.1-flash-image", "name": "gemini-3.1-flash-image", @@ -235615,61 +235850,19 @@ "type": "imageGeneration" }, { - "id": "gemini-3-pro-image", - "name": "gemini-3-pro-image", - "display_name": "gemini-3-pro-image", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "level", - "level": "high", - "level_options": [ - "low", - "high" - ], - "summaries": true, - "visibility": "summary", - "continuation": [ - "thought_signatures" - ] - } - }, - "cost": { - "input": 2, - "output": 12, - "cache_read": 2 - }, - "type": "imageGeneration" - }, - { - "id": "gpt-4o-transcribe-diarize", - "name": "gpt-4o-transcribe-diarize", - "display_name": "gpt-4o-transcribe-diarize", + "id": "kimi-k2.7-code", + "name": "kimi-k2.7-code", + "display_name": "kimi-k2.7-code", "modalities": { "input": [ "text", - "audio" + "image", + "video" ] }, "limit": { - "context": 16000, - "output": 16000 + "context": 262144, + "output": 262144 }, "tool_call": true, "reasoning": { @@ -235682,25 +235875,26 @@ } }, "cost": { - "input": 2.5, - "output": 10, - "cache_read": 2.5 + "input": 0.95, + "output": 3.9995, + "cache_read": 0.160835 }, "type": "chat" }, { - "id": "gpt-audio-1.5", - "name": "gpt-audio-1.5", - "display_name": "gpt-audio-1.5", + "id": "kimi-k2.7-code-highspeed", + "name": "kimi-k2.7-code-highspeed", + "display_name": "kimi-k2.7-code-highspeed", "modalities": { "input": [ "text", - "audio" + "image", + "video" ] }, "limit": { - "context": 128000, - "output": 128000 + "context": 262144, + "output": 262144 }, "tool_call": true, "reasoning": { @@ -235713,16 +235907,16 @@ } }, "cost": { - "input": 2.5, - "output": 10, - "cache_read": 2.5 + "input": 1.9, + "output": 7.999, + "cache_read": 0.32167 }, "type": "chat" }, { - "id": "kling-v3-omni", - "name": "kling-v3-omni", - "display_name": "kling-v3-omni", + "id": "hy-3d-3.1", + "name": "hy-3d-3.1", + "display_name": "hy-3d-3.1", "modalities": { "input": [ "text", @@ -235739,15 +235933,39 @@ }, "cost": { "input": 2, - "output": 0, - "cache_read": 0 + "output": 2 }, "type": "chat" }, { - "id": "kling-video-o1", - "name": "kling-video-o1", - "display_name": "kling-video-o1", + "id": "kling-v3-omni", + "name": "kling-v3-omni", + "display_name": "kling-v3-omni", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2, + "output": 0, + "cache_read": 0 + }, + "type": "chat" + }, + { + "id": "kling-video-o1", + "name": "kling-video-o1", + "display_name": "kling-video-o1", "modalities": { "input": [ "text", @@ -235799,6 +236017,136 @@ }, "type": "chat" }, + { + "id": "gemini-3-pro-image", + "name": "gemini-3-pro-image", + "display_name": "gemini-3-pro-image", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "default_enabled": true, + "mode": "level", + "level": "high", + "level_options": [ + "low", + "high" + ], + "summaries": true, + "visibility": "summary", + "continuation": [ + "thought_signatures" + ] + } + }, + "cost": { + "input": 2, + "output": 12, + "cache_read": 2 + }, + "type": "imageGeneration" + }, + { + "id": "gpt-4o-transcribe-diarize", + "name": "gpt-4o-transcribe-diarize", + "display_name": "gpt-4o-transcribe-diarize", + "modalities": { + "input": [ + "text", + "audio" + ] + }, + "limit": { + "context": 16000, + "output": 16000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 2.5, + "output": 10, + "cache_read": 2.5 + }, + "type": "chat" + }, + { + "id": "gpt-audio-1.5", + "name": "gpt-audio-1.5", + "display_name": "gpt-audio-1.5", + "modalities": { + "input": [ + "text", + "audio" + ] + }, + "limit": { + "context": 128000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 2.5, + "output": 10, + "cache_read": 2.5 + }, + "type": "chat" + }, + { + "id": "step-3.7-flash", + "name": "step-3.7-flash", + "display_name": "step-3.7-flash", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 256000, + "output": 256000 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.22, + "output": 1.32, + "cache_read": 0.044 + }, + "type": "chat" + }, { "id": "hy3-preview", "name": "hy3-preview", @@ -235888,31 +236236,6 @@ }, "type": "chat" }, - { - "id": "step-3.7-flash", - "name": "step-3.7-flash", - "display_name": "step-3.7-flash", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.22, - "output": 1.32, - "cache_read": 0.044 - }, - "type": "chat" - }, { "id": "claude-opus-4-8-think", "name": "claude-opus-4-8-think", @@ -236116,35 +236439,6 @@ }, "type": "chat" }, - { - "id": "coding-glm-5.2", - "name": "coding-glm-5.2", - "display_name": "coding-glm-5.2", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0.06, - "output": 0.22 - }, - "type": "chat" - }, { "id": "grok-4.3", "name": "grok-4.3", @@ -236268,6 +236562,64 @@ }, "type": "chat" }, + { + "id": "coding-glm-5.2", + "name": "coding-glm-5.2", + "display_name": "coding-glm-5.2", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.06, + "output": 0.22 + }, + "type": "chat" + }, + { + "id": "coding-minimax-m3-free", + "name": "coding-minimax-m3-free", + "display_name": "coding-minimax-m3-free", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 204800, + "output": 204800 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0, + "output": 0 + }, + "type": "chat" + }, { "id": "gpt-5.5", "name": "gpt-5.5", @@ -236346,35 +236698,6 @@ }, "type": "chat" }, - { - "id": "coding-minimax-m3-free", - "name": "coding-minimax-m3-free", - "display_name": "coding-minimax-m3-free", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 204800, - "output": 204800 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0, - "output": 0 - }, - "type": "chat" - }, { "id": "deepseek-v4-flash", "name": "deepseek-v4-flash", @@ -236447,6 +236770,31 @@ }, "type": "chat" }, + { + "id": "doubao-seedream-5.0-pro", + "name": "doubao-seedream-5.0-pro", + "display_name": "doubao-seedream-5.0-pro", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2, + "output": 0, + "cache_read": 0 + }, + "type": "imageGeneration" + }, { "id": "ernie-5.0", "name": "ernie-5.0", @@ -236480,6 +236828,36 @@ }, "type": "chat" }, + { + "id": "command-a-plus-05-2026", + "name": "command-a-plus-05-2026", + "display_name": "command-a-plus-05-2026", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 128000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 2.5, + "output": 10 + }, + "type": "chat" + }, { "id": "kimi-k2.6", "name": "kimi-k2.6", @@ -236599,36 +236977,6 @@ }, "type": "chat" }, - { - "id": "command-a-plus-05-2026", - "name": "command-a-plus-05-2026", - "display_name": "command-a-plus-05-2026", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 128000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 2.5, - "output": 10 - }, - "type": "chat" - }, { "id": "claude-opus-4-7", "name": "claude-opus-4-7", @@ -236733,6 +237081,37 @@ }, "type": "chat" }, + { + "id": "gpt-chat-latest", + "name": "gpt-chat-latest", + "display_name": "gpt-chat-latest", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 1050000, + "output": 1050000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 5, + "output": 30, + "cache_read": 0.5 + }, + "type": "chat" + }, { "id": "qwen3.6-27b", "name": "qwen3.6-27b", @@ -236847,9 +237226,33 @@ "type": "chat" }, { - "id": "gpt-chat-latest", - "name": "gpt-chat-latest", - "display_name": "gpt-chat-latest", + "id": "mai-image-2e", + "name": "mai-image-2e", + "display_name": "mai-image-2e", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 5, + "output": 19.5, + "cache_read": 0 + }, + "type": "imageGeneration" + }, + { + "id": "qwen-image-2.0", + "name": "qwen-image-2.0", + "display_name": "qwen-image-2.0", "modalities": { "input": [ "text", @@ -236857,25 +237260,94 @@ ] }, "limit": { - "context": 1050000, - "output": 1050000 + "context": 8192, + "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true + "supported": false }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "cost": { + "input": 2, + "output": 0, + "cache_read": 0 + }, + "type": "imageGeneration" + }, + { + "id": "qwen-image-2.0-pro", + "name": "qwen-image-2.0-pro", + "display_name": "qwen-image-2.0-pro", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false }, "cost": { - "input": 5, - "output": 30, - "cache_read": 0.5 + "input": 2, + "output": 0, + "cache_read": 0 }, - "type": "chat" + "type": "imageGeneration" + }, + { + "id": "cohere-rerank-v4.0-fast", + "name": "cohere-rerank-v4.0-fast", + "display_name": "cohere-rerank-v4.0-fast", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.068, + "output": 0, + "cache_read": 0.068 + }, + "type": "rerank" + }, + { + "id": "cohere-rerank-v4.0-pro", + "name": "cohere-rerank-v4.0-pro", + "display_name": "cohere-rerank-v4.0-pro", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.068, + "output": 0, + "cache_read": 0.068 + }, + "type": "rerank" }, { "id": "grok-4-20-non-reasoning", @@ -236939,168 +237411,6 @@ }, "type": "chat" }, - { - "id": "mai-image-2e", - "name": "mai-image-2e", - "display_name": "mai-image-2e", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 5, - "output": 19.5, - "cache_read": 0 - }, - "type": "imageGeneration" - }, - { - "id": "qwen-image-2.0", - "name": "qwen-image-2.0", - "display_name": "qwen-image-2.0", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2, - "output": 0, - "cache_read": 0 - }, - "type": "imageGeneration" - }, - { - "id": "qwen-image-2.0-pro", - "name": "qwen-image-2.0-pro", - "display_name": "qwen-image-2.0-pro", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2, - "output": 0, - "cache_read": 0 - }, - "type": "imageGeneration" - }, - { - "id": "cohere-rerank-v4.0-fast", - "name": "cohere-rerank-v4.0-fast", - "display_name": "cohere-rerank-v4.0-fast", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.068, - "output": 0, - "cache_read": 0.068 - }, - "type": "rerank" - }, - { - "id": "cohere-rerank-v4.0-pro", - "name": "cohere-rerank-v4.0-pro", - "display_name": "cohere-rerank-v4.0-pro", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.068, - "output": 0, - "cache_read": 0.068 - }, - "type": "rerank" - }, - { - "id": "qwen3.6-plus", - "name": "qwen3.6-plus", - "display_name": "qwen3.6-plus", - "modalities": { - "input": [ - "text", - "image", - "video" - ] - }, - "limit": { - "context": 991000, - "output": 991000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "cost": { - "input": 0.282, - "output": 1.692, - "cache_read": 0.0282 - }, - "type": "chat" - }, { "id": "doubao-seedance-2-0-260128", "name": "doubao-seedance-2-0-260128", @@ -237227,6 +237537,44 @@ }, "type": "imageGeneration" }, + { + "id": "qwen3.6-plus", + "name": "qwen3.6-plus", + "display_name": "qwen3.6-plus", + "modalities": { + "input": [ + "text", + "image", + "video" + ] + }, + "limit": { + "context": 991000, + "output": 991000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "cost": { + "input": 0.282, + "output": 1.692, + "cache_read": 0.0282 + }, + "type": "chat" + }, { "id": "wan2.7-videoedit", "name": "wan2.7-videoedit", @@ -237372,25 +237720,6 @@ }, "type": "imageGeneration" }, - { - "id": "cc-k2.6-code-preview", - "name": "cc-k2.6-code-preview", - "display_name": "cc-k2.6-code-preview", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.2, - "output": 0.2, - "cache_read": 0.02 - }, - "type": "chat" - }, { "id": "gemma-4-26b-a4b-it", "name": "gemma-4-26b-a4b-it", @@ -237477,6 +237806,177 @@ }, "type": "chat" }, + { + "id": "cc-k2.6-code-preview", + "name": "cc-k2.6-code-preview", + "display_name": "cc-k2.6-code-preview", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.2, + "output": 0.2, + "cache_read": 0.02 + }, + "type": "chat" + }, + { + "id": "claude-sonnet-4-6", + "name": "claude-sonnet-4-6", + "display_name": "claude-sonnet-4-6", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 1000000, + "output": 1000000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": false + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "default_enabled": false, + "mode": "mixed", + "budget": { + "min": 1024, + "unit": "tokens" + }, + "effort": "high", + "effort_options": [ + "low", + "medium", + "high", + "max" + ], + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ], + "notes": [ + "Anthropic recommends adaptive thinking with effort for Claude 4.6; budget_tokens remains a deprecated compatibility path.", + "Anthropic API defaults effort to high; lower effort levels should be chosen per workload." + ] + } + }, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "type": "chat" + }, + { + "id": "coding-xiaomi-mimo-v2.5", + "name": "coding-xiaomi-mimo-v2.5", + "display_name": "coding-xiaomi-mimo-v2.5", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.08, + "output": 0.16, + "cache_read": 0.0016 + }, + "type": "chat" + }, + { + "id": "coding-xiaomi-mimo-v2.5-pro", + "name": "coding-xiaomi-mimo-v2.5-pro", + "display_name": "coding-xiaomi-mimo-v2.5-pro", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.2, + "output": 0.4, + "cache_read": 0.0016 + }, + "type": "chat" + }, + { + "id": "qwen3.5-plus", + "name": "qwen3.5-plus", + "display_name": "qwen3.5-plus", + "modalities": { + "input": [ + "text", + "image", + "video" + ] + }, + "limit": { + "context": 991000, + "output": 991000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "cost": { + "input": 0.1096, + "output": 0.6576, + "cache_read": 0.01096 + }, + "type": "chat" + }, { "id": "doubao-seed-2-0-lite-260428", "name": "doubao-seed-2-0-lite-260428", @@ -237869,47 +238369,34 @@ "type": "chat" }, { - "id": "qwen3.5-plus", - "name": "qwen3.5-plus", - "display_name": "qwen3.5-plus", + "id": "gpt-5.3-chat-latest", + "name": "gpt-5.3-chat-latest", + "display_name": "gpt-5.3-chat-latest", "modalities": { "input": [ "text", - "image", - "video" + "image" ] }, "limit": { - "context": 991000, - "output": 991000 + "context": 128000, + "output": 128000 }, "tool_call": true, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.1096, - "output": 0.6576, - "cache_read": 0.01096 + "input": 1.75, + "output": 14, + "cache_read": 0.175 }, "type": "chat" }, { - "id": "claude-sonnet-4-6", - "name": "claude-sonnet-4-6", - "display_name": "claude-sonnet-4-6", + "id": "gpt-5.3-codex", + "name": "gpt-5.3-codex", + "display_name": "gpt-5.3-codex", "modalities": { "input": [ "text", @@ -237917,108 +238404,66 @@ ] }, "limit": { - "context": 1000000, - "output": 1000000 + "context": 400000, + "output": 400000 }, "tool_call": true, "reasoning": { "supported": true, - "default": false + "default": true }, "extra_capabilities": { "reasoning": { "supported": true, - "default_enabled": false, - "mode": "mixed", - "budget": { - "min": 1024, - "unit": "tokens" - }, - "effort": "high", + "default_enabled": true, + "mode": "effort", + "effort": "medium", "effort_options": [ "low", "medium", "high", - "max" + "xhigh" ], - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" + "verbosity": "medium", + "verbosity_options": [ + "low", + "medium", + "high" ], - "notes": [ - "Anthropic recommends adaptive thinking with effort for Claude 4.6; budget_tokens remains a deprecated compatibility path.", - "Anthropic API defaults effort to high; lower effort levels should be chosen per workload." - ] - } - }, - "cost": { - "input": 3, - "output": 15, - "cache_read": 0.3 - }, - "type": "chat" - }, - { - "id": "coding-xiaomi-mimo-v2.5", - "name": "coding-xiaomi-mimo-v2.5", - "display_name": "coding-xiaomi-mimo-v2.5", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true + "visibility": "hidden" } }, "cost": { - "input": 0.08, - "output": 0.16, - "cache_read": 0.0016 + "input": 1.75, + "output": 14, + "cache_read": 0.175 }, "type": "chat" }, { - "id": "coding-xiaomi-mimo-v2.5-pro", - "name": "coding-xiaomi-mimo-v2.5-pro", - "display_name": "coding-xiaomi-mimo-v2.5-pro", + "id": "gpt-image-2-free", + "name": "gpt-image-2-free", + "display_name": "gpt-image-2-free", "modalities": { "input": [ - "text" + "text", + "image" ] }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { - "input": 0.2, - "output": 0.4, - "cache_read": 0.0016 + "input": 0, + "output": 0, + "cache_read": 0 }, - "type": "chat" + "type": "imageGeneration" }, { "id": "claude-sonnet-4-6-think", @@ -238134,103 +238579,6 @@ }, "type": "chat" }, - { - "id": "gpt-5.3-chat-latest", - "name": "gpt-5.3-chat-latest", - "display_name": "gpt-5.3-chat-latest", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 128000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "cost": { - "input": 1.75, - "output": 14, - "cache_read": 0.175 - }, - "type": "chat" - }, - { - "id": "gpt-5.3-codex", - "name": "gpt-5.3-codex", - "display_name": "gpt-5.3-codex", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 400000, - "output": 400000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "effort", - "effort": "medium", - "effort_options": [ - "low", - "medium", - "high", - "xhigh" - ], - "verbosity": "medium", - "verbosity_options": [ - "low", - "medium", - "high" - ], - "visibility": "hidden" - } - }, - "cost": { - "input": 1.75, - "output": 14, - "cache_read": 0.175 - }, - "type": "chat" - }, - { - "id": "gpt-image-2-free", - "name": "gpt-image-2-free", - "display_name": "gpt-image-2-free", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "imageGeneration" - }, { "id": "qwen3.5-122b-a10b", "name": "qwen3.5-122b-a10b", @@ -238445,143 +238793,6 @@ }, "type": "chat" }, - { - "id": "coding-glm-5.1", - "name": "coding-glm-5.1", - "display_name": "coding-glm-5.1", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0.06, - "output": 0.22 - }, - "type": "chat" - }, - { - "id": "xiaomi-mimo-v2.5-pro-free", - "name": "xiaomi-mimo-v2.5-pro-free", - "display_name": "xiaomi-mimo-v2.5-pro-free", - "modalities": { - "input": [ - "text", - "image", - "video", - "audio" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "xiaomi-mimo-v2.5-free", - "name": "xiaomi-mimo-v2.5-free", - "display_name": "xiaomi-mimo-v2.5-free", - "modalities": { - "input": [ - "text", - "image", - "video", - "audio" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "xiaomi-mimo-v2-pro-free", - "name": "xiaomi-mimo-v2-pro-free", - "display_name": "xiaomi-mimo-v2-pro-free", - "modalities": { - "input": [ - "text", - "image", - "video", - "audio" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "xiaomi-mimo-v2-omni-free", - "name": "xiaomi-mimo-v2-omni-free", - "display_name": "xiaomi-mimo-v2-omni-free", - "modalities": { - "input": [ - "text", - "image", - "video", - "audio" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "chat" - }, { "id": "doubao-seed-2-0-pro", "name": "doubao-seed-2-0-pro", @@ -238757,64 +238968,139 @@ "type": "chat" }, { - "id": "glm-5", - "name": "glm-5", - "display_name": "glm-5", + "id": "xiaomi-mimo-v2.5-pro-free", + "name": "xiaomi-mimo-v2.5-pro-free", + "display_name": "xiaomi-mimo-v2.5-pro-free", "modalities": { "input": [ - "text" + "text", + "image", + "video", + "audio" ] }, "limit": { - "context": 202752, - "output": 202752 + "context": 256000, + "output": 256000 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true + "supported": false }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + }, + "type": "chat" + }, + { + "id": "xiaomi-mimo-v2.5-free", + "name": "xiaomi-mimo-v2.5-free", + "display_name": "xiaomi-mimo-v2.5-free", + "modalities": { + "input": [ + "text", + "image", + "video", + "audio" + ] + }, + "limit": { + "context": 256000, + "output": 256000 + }, + "tool_call": false, + "reasoning": { + "supported": false }, "cost": { - "input": 0.88, - "output": 2.816, - "cache_read": 0.176 + "input": 0, + "output": 0, + "cache_read": 0 }, "type": "chat" }, { - "id": "glm-5v-turbo", - "name": "glm-5v-turbo", - "display_name": "glm-5v-turbo", + "id": "xiaomi-mimo-v2-pro-free", + "name": "xiaomi-mimo-v2-pro-free", + "display_name": "xiaomi-mimo-v2-pro-free", "modalities": { "input": [ "text", "image", - "video" + "video", + "audio" ] }, "limit": { - "context": 200000, - "output": 200000 + "context": 256000, + "output": 256000 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.7042, - "output": 3.09848, - "cache_read": 0.169008 + "input": 0, + "output": 0, + "cache_read": 0 + }, + "type": "chat" + }, + { + "id": "xiaomi-mimo-v2-omni-free", + "name": "xiaomi-mimo-v2-omni-free", + "display_name": "xiaomi-mimo-v2-omni-free", + "modalities": { + "input": [ + "text", + "image", + "video", + "audio" + ] + }, + "limit": { + "context": 256000, + "output": 256000 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + }, + "type": "chat" + }, + { + "id": "coding-glm-5.1", + "name": "coding-glm-5.1", + "display_name": "coding-glm-5.1", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.06, + "output": 0.22 }, "type": "chat" }, @@ -238932,17 +239218,17 @@ "type": "chat" }, { - "id": "minimax-m2.7", - "name": "minimax-m2.7", - "display_name": "minimax-m2.7", + "id": "glm-5", + "name": "glm-5", + "display_name": "glm-5", "modalities": { "input": [ "text" ] }, "limit": { - "context": 200000, - "output": 200000 + "context": 202752, + "output": 202752 }, "tool_call": true, "reasoning": { @@ -238961,138 +239247,50 @@ } }, "cost": { - "input": 0.2958, - "output": 1.1832, - "cache_read": 0.05916 + "input": 0.88, + "output": 2.816, + "cache_read": 0.176 }, "type": "chat" }, { - "id": "claude-opus-4-6-think", - "name": "claude-opus-4-6-think", - "display_name": "claude-opus-4-6-think", + "id": "glm-5v-turbo", + "name": "glm-5v-turbo", + "display_name": "glm-5v-turbo", "modalities": { "input": [ + "text", "image", - "text" + "video" ] }, "limit": { "context": 200000, "output": 200000 }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "mixed", - "budget": { - "min": 1024, - "unit": "tokens" - }, - "effort": "high", - "effort_options": [ - "low", - "medium", - "high", - "max" - ], - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ], - "notes": [ - "Anthropic recommends adaptive thinking with effort for Claude 4.6; budget_tokens remains a deprecated compatibility path.", - "Anthropic API defaults effort to high; lower effort levels should be chosen per workload." - ] - } - }, - "cost": { - "input": 5, - "output": 25, - "cache_read": 0.5 - }, - "type": "chat" - }, - { - "id": "coding-glm-5-free", - "name": "coding-glm-5-free", - "display_name": "coding-glm-5-free", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0, - "output": 0, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "coding-glm-5-turbo-free", - "name": "coding-glm-5-turbo-free", - "display_name": "coding-glm-5-turbo-free", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { - "input": 0, - "output": 0, - "cache_read": 0 + "input": 0.7042, + "output": 3.09848, + "cache_read": 0.169008 }, "type": "chat" }, { - "id": "coding-minimax-m2.5-free", - "name": "coding-minimax-m2.5-free", - "display_name": "coding-minimax-m2.5-free", + "id": "minimax-m2.7", + "name": "minimax-m2.7", + "display_name": "minimax-m2.7", "modalities": { "input": [ "text" ] }, "limit": { - "context": 204800, - "output": 204800 + "context": 200000, + "output": 200000 }, "tool_call": true, "reasoning": { @@ -239101,12 +239299,19 @@ }, "extra_capabilities": { "reasoning": { - "supported": true + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] } }, "cost": { - "input": 0, - "output": 0 + "input": 0.2958, + "output": 1.1832, + "cache_read": 0.05916 }, "type": "chat" }, @@ -239329,66 +239534,106 @@ "type": "chat" }, { - "id": "embed-v-4-0", - "name": "embed-v-4-0", - "display_name": "embed-v-4-0", + "id": "claude-opus-4-6-think", + "name": "claude-opus-4-6-think", + "display_name": "claude-opus-4-6-think", "modalities": { "input": [ - "text", - "image" + "image", + "text" ] }, "limit": { - "context": 128000, - "output": 128000 + "context": 200000, + "output": 200000 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "default_enabled": true, + "mode": "mixed", + "budget": { + "min": 1024, + "unit": "tokens" + }, + "effort": "high", + "effort_options": [ + "low", + "medium", + "high", + "max" + ], + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ], + "notes": [ + "Anthropic recommends adaptive thinking with effort for Claude 4.6; budget_tokens remains a deprecated compatibility path.", + "Anthropic API defaults effort to high; lower effort levels should be chosen per workload." + ] + } }, "cost": { - "input": 0.12, - "output": 0, - "cache_read": 0.12 + "input": 5, + "output": 25, + "cache_read": 0.5 }, - "type": "embedding" + "type": "chat" }, { - "id": "ernie-image-turbo", - "name": "ernie-image-turbo", - "display_name": "ernie-image-turbo", + "id": "coding-glm-5-free", + "name": "coding-glm-5-free", + "display_name": "coding-glm-5-free", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } }, "cost": { - "input": 2, + "input": 0, "output": 0, "cache_read": 0 }, - "type": "imageGeneration" + "type": "chat" }, { - "id": "gemini-3.1-flash-image-preview-free", - "name": "gemini-3.1-flash-image-preview-free", - "display_name": "gemini-3.1-flash-image-preview-free", + "id": "coding-glm-5-turbo-free", + "name": "coding-glm-5-turbo-free", + "display_name": "coding-glm-5-turbo-free", "modalities": { "input": [ - "text", - "image" + "text" ] }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": true + "supported": true, + "default": true }, "extra_capabilities": { "reasoning": { @@ -239400,7 +239645,36 @@ "output": 0, "cache_read": 0 }, - "type": "imageGeneration" + "type": "chat" + }, + { + "id": "coding-minimax-m2.5-free", + "name": "coding-minimax-m2.5-free", + "display_name": "coding-minimax-m2.5-free", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 204800, + "output": 204800 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0, + "output": 0 + }, + "type": "chat" }, { "id": "cc-glm-5.1", @@ -239537,6 +239811,80 @@ }, "type": "chat" }, + { + "id": "embed-v-4-0", + "name": "embed-v-4-0", + "display_name": "embed-v-4-0", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 128000, + "output": 128000 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.12, + "output": 0, + "cache_read": 0.12 + }, + "type": "embedding" + }, + { + "id": "ernie-image-turbo", + "name": "ernie-image-turbo", + "display_name": "ernie-image-turbo", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2, + "output": 0, + "cache_read": 0 + }, + "type": "imageGeneration" + }, + { + "id": "gemini-3.1-flash-image-preview-free", + "name": "gemini-3.1-flash-image-preview-free", + "display_name": "gemini-3.1-flash-image-preview-free", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0, + "output": 0, + "cache_read": 0 + }, + "type": "imageGeneration" + }, { "id": "mimo-v2-omni", "name": "mimo-v2-omni", @@ -242530,6 +242878,30 @@ }, "type": "chat" }, + { + "id": "step-3.5-flash", + "name": "step-3.5-flash", + "display_name": "step-3.5-flash", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 256000, + "output": 256000 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.11, + "output": 0.33 + }, + "type": "chat" + }, { "id": "wan2.5-t2v-preview", "name": "wan2.5-t2v-preview", @@ -242719,30 +243091,6 @@ }, "type": "chat" }, - { - "id": "step-3.5-flash", - "name": "step-3.5-flash", - "display_name": "step-3.5-flash", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 256000, - "output": 256000 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.11, - "output": 0.33 - }, - "type": "chat" - }, { "id": "flux-2-flex", "name": "flux-2-flex", @@ -244175,9 +244523,9 @@ "type": "chat" }, { - "id": "veo-3.0-generate-preview", - "name": "veo-3.0-generate-preview", - "display_name": "veo-3.0-generate-preview", + "id": "veo-3.1-fast-generate-preview", + "name": "veo-3.1-fast-generate-preview", + "display_name": "veo-3.1-fast-generate-preview", "modalities": { "input": [ "text", @@ -244195,15 +244543,14 @@ }, "cost": { "input": 2, - "output": 2, - "cache_read": 0 + "output": 0 }, "type": "chat" }, { - "id": "veo-3.1-fast-generate-preview", - "name": "veo-3.1-fast-generate-preview", - "display_name": "veo-3.1-fast-generate-preview", + "id": "veo-3.0-generate-preview", + "name": "veo-3.0-generate-preview", + "display_name": "veo-3.0-generate-preview", "modalities": { "input": [ "text", @@ -244221,7 +244568,8 @@ }, "cost": { "input": 2, - "output": 0 + "output": 2, + "cache_read": 0 }, "type": "chat" }, @@ -245847,24 +246195,6 @@ }, "type": "rerank" }, - { - "id": "tao-8k", - "name": "tao-8k", - "display_name": "tao-8k", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.068, - "output": 0.068 - }, - "type": "embedding" - }, { "id": "doubao-seedream-4-0", "name": "doubao-seedream-4-0", @@ -246035,6 +246365,24 @@ }, "type": "chat" }, + { + "id": "tao-8k", + "name": "tao-8k", + "display_name": "tao-8k", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.068, + "output": 0.068 + }, + "type": "embedding" + }, { "id": "jina-clip-v2", "name": "jina-clip-v2", @@ -246106,6 +246454,31 @@ }, "type": "embedding" }, + { + "id": "gpt-4o-search-preview", + "name": "gpt-4o-search-preview", + "display_name": "gpt-4o-search-preview", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 128000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2.5, + "output": 10, + "cache_read": 1.25 + }, + "type": "chat" + }, { "id": "DeepSeek-R1", "name": "DeepSeek-R1", @@ -246140,31 +246513,6 @@ }, "type": "chat" }, - { - "id": "gpt-4o-search-preview", - "name": "gpt-4o-search-preview", - "display_name": "gpt-4o-search-preview", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 128000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2.5, - "output": 10, - "cache_read": 1.25 - }, - "type": "chat" - }, { "id": "gpt-4o-mini-search-preview", "name": "gpt-4o-mini-search-preview", @@ -246589,58 +246937,6 @@ }, "type": "chat" }, - { - "id": "gemini-embedding-001", - "name": "gemini-embedding-001", - "display_name": "gemini-embedding-001", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.15, - "output": 0.15 - }, - "type": "embedding" - }, - { - "id": "gpt-oss-120b", - "name": "gpt-oss-120b", - "display_name": "gpt-oss-120b", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 131072 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0.18, - "output": 0.9 - }, - "type": "chat" - }, { "id": "Qwen2-VL-72B-Instruct", "name": "Qwen2-VL-72B-Instruct", @@ -246710,6 +247006,58 @@ }, "type": "chat" }, + { + "id": "gemini-embedding-001", + "name": "gemini-embedding-001", + "display_name": "gemini-embedding-001", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.15, + "output": 0.15 + }, + "type": "embedding" + }, + { + "id": "gpt-oss-120b", + "name": "gpt-oss-120b", + "display_name": "gpt-oss-120b", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 131072, + "output": 131072 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.18, + "output": 0.9 + }, + "type": "chat" + }, { "id": "Qwen/Qwen3-30B-A3B", "name": "Qwen/Qwen3-30B-A3B", @@ -247716,29 +248064,6 @@ }, "type": "chat" }, - { - "id": "ernie-x1.1-preview", - "name": "ernie-x1.1-preview", - "display_name": "ernie-x1.1-preview", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 0.136, - "output": 0.544 - }, - "type": "chat" - }, { "id": "minimax-m2", "name": "minimax-m2", @@ -247769,96 +248094,88 @@ "type": "chat" }, { - "id": "kat-dev", - "name": "kat-dev", - "display_name": "kat-dev", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 128000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.137, - "output": 0.548 - }, - "type": "chat" - }, - { - "id": "llama-3.3-70b", - "name": "llama-3.3-70b", - "display_name": "llama-3.3-70b", + "id": "ernie-x1.1-preview", + "name": "ernie-x1.1-preview", + "display_name": "ernie-x1.1-preview", "limit": { - "context": 65536, - "output": 65536 + "context": 8192, + "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } }, "cost": { - "input": 0.6, - "output": 0.6 + "input": 0.136, + "output": 0.544 }, "type": "chat" }, { - "id": "moonshotai/Kimi-Dev-72B", - "name": "moonshotai/Kimi-Dev-72B", - "display_name": "moonshotai/Kimi-Dev-72B", + "id": "ernie-4.5-0.3b", + "name": "ernie-4.5-0.3b", + "display_name": "ernie-4.5-0.3b", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": false, + "tool_call": true, "reasoning": { "supported": false }, "cost": { - "input": 0.32, - "output": 1.28, - "cache_read": 0 + "input": 0.0136, + "output": 0.0544 }, "type": "chat" }, { - "id": "moonshotai/Moonlight-16B-A3B-Instruct", - "name": "moonshotai/Moonlight-16B-A3B-Instruct", - "display_name": "moonshotai/Moonlight-16B-A3B-Instruct", + "id": "ernie-4.5-turbo-128k-preview", + "name": "ernie-4.5-turbo-128k-preview", + "display_name": "ernie-4.5-turbo-128k-preview", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": false, + "tool_call": true, "reasoning": { "supported": false }, "cost": { - "input": 0.2, - "output": 0.2, - "cache_read": 0 + "input": 0.108, + "output": 0.432 }, "type": "chat" }, { - "id": "nvidia-nemotron-3-super-120b-a12b", - "name": "nvidia-nemotron-3-super-120b-a12b", - "display_name": "nvidia-nemotron-3-super-120b-a12b", + "id": "ernie-x1-turbo", + "name": "ernie-x1-turbo", + "display_name": "ernie-x1-turbo", "modalities": { "input": [ "text" ] }, "limit": { - "context": 1000000, - "output": 1000000 + "context": 50500, + "output": 50500 }, "tool_call": true, "reasoning": { @@ -247871,85 +248188,8 @@ } }, "cost": { - "input": 0.11, - "output": 0.55, - "cache_read": 0.0275 - }, - "type": "chat" - }, - { - "id": "o1-global", - "name": "o1-global", - "display_name": "o1-global", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "effort", - "effort": "medium", - "effort_options": [ - "low", - "medium", - "high" - ], - "visibility": "hidden" - } - }, - "cost": { - "input": 15, - "output": 60, - "cache_read": 7.5 - }, - "type": "chat" - }, - { - "id": "qianfan-qi-vl", - "name": "qianfan-qi-vl", - "display_name": "qianfan-qi-vl", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.2, - "output": 0.6 - }, - "type": "chat" - }, - { - "id": "qwen2.5-vl-72b-instruct", - "name": "qwen2.5-vl-72b-instruct", - "display_name": "qwen2.5-vl-72b-instruct", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2.4, - "output": 7.2 + "input": 0.136, + "output": 0.544 }, "type": "chat" }, @@ -248125,65 +248365,96 @@ "type": "chat" }, { - "id": "ernie-4.5-0.3b", - "name": "ernie-4.5-0.3b", - "display_name": "ernie-4.5-0.3b", + "id": "kat-dev", + "name": "kat-dev", + "display_name": "kat-dev", "modalities": { "input": [ - "text", - "image" + "text" ] }, "limit": { - "context": 8192, - "output": 8192 + "context": 128000, + "output": 128000 }, "tool_call": true, "reasoning": { "supported": false }, "cost": { - "input": 0.0136, - "output": 0.0544 + "input": 0.137, + "output": 0.548 }, "type": "chat" }, { - "id": "ernie-4.5-turbo-128k-preview", - "name": "ernie-4.5-turbo-128k-preview", - "display_name": "ernie-4.5-turbo-128k-preview", - "modalities": { - "input": [ - "text", - "image" - ] + "id": "llama-3.3-70b", + "name": "llama-3.3-70b", + "display_name": "llama-3.3-70b", + "limit": { + "context": 65536, + "output": 65536 + }, + "tool_call": false, + "reasoning": { + "supported": false }, + "cost": { + "input": 0.6, + "output": 0.6 + }, + "type": "chat" + }, + { + "id": "moonshotai/Kimi-Dev-72B", + "name": "moonshotai/Kimi-Dev-72B", + "display_name": "moonshotai/Kimi-Dev-72B", "limit": { "context": 8192, "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.108, - "output": 0.432 + "input": 0.32, + "output": 1.28, + "cache_read": 0 }, "type": "chat" }, { - "id": "ernie-x1-turbo", - "name": "ernie-x1-turbo", - "display_name": "ernie-x1-turbo", + "id": "moonshotai/Moonlight-16B-A3B-Instruct", + "name": "moonshotai/Moonlight-16B-A3B-Instruct", + "display_name": "moonshotai/Moonlight-16B-A3B-Instruct", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.2, + "output": 0.2, + "cache_read": 0 + }, + "type": "chat" + }, + { + "id": "nvidia-nemotron-3-super-120b-a12b", + "name": "nvidia-nemotron-3-super-120b-a12b", + "display_name": "nvidia-nemotron-3-super-120b-a12b", "modalities": { "input": [ "text" ] }, "limit": { - "context": 50500, - "output": 50500 + "context": 1000000, + "output": 1000000 }, "tool_call": true, "reasoning": { @@ -248196,15 +248467,50 @@ } }, "cost": { - "input": 0.136, - "output": 0.544 + "input": 0.11, + "output": 0.55, + "cache_read": 0.0275 }, "type": "chat" }, { - "id": "gemini-exp-1206", - "name": "gemini-exp-1206", - "display_name": "gemini-exp-1206", + "id": "o1-global", + "name": "o1-global", + "display_name": "o1-global", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "default_enabled": true, + "mode": "effort", + "effort": "medium", + "effort_options": [ + "low", + "medium", + "high" + ], + "visibility": "hidden" + } + }, + "cost": { + "input": 15, + "output": 60, + "cache_read": 7.5 + }, + "type": "chat" + }, + { + "id": "qianfan-qi-vl", + "name": "qianfan-qi-vl", + "display_name": "qianfan-qi-vl", "limit": { "context": 8192, "output": 8192 @@ -248214,15 +248520,15 @@ "supported": false }, "cost": { - "input": 1.25, - "output": 5 + "input": 0.2, + "output": 0.6 }, "type": "chat" }, { - "id": "gpt-4o-zh", - "name": "gpt-4o-zh", - "display_name": "gpt-4o-zh", + "id": "qwen2.5-vl-72b-instruct", + "name": "qwen2.5-vl-72b-instruct", + "display_name": "qwen2.5-vl-72b-instruct", "modalities": { "input": [ "text", @@ -248238,8 +248544,8 @@ "supported": false }, "cost": { - "input": 2.5, - "output": 10 + "input": 2.4, + "output": 7.2 }, "type": "chat" }, @@ -248261,6 +248567,48 @@ }, "type": "chat" }, + { + "id": "gemini-exp-1206", + "name": "gemini-exp-1206", + "display_name": "gemini-exp-1206", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 1.25, + "output": 5 + }, + "type": "chat" + }, + { + "id": "gpt-4o-zh", + "name": "gpt-4o-zh", + "display_name": "gpt-4o-zh", + "modalities": { + "input": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2.5, + "output": 10 + }, + "type": "chat" + }, { "id": "unsloth/gemma-3-12b-it", "name": "unsloth/gemma-3-12b-it", @@ -248298,6 +248646,24 @@ }, "type": "chat" }, + { + "id": "tencent/Hunyuan-MT-7B", + "name": "tencent/Hunyuan-MT-7B", + "display_name": "tencent/Hunyuan-MT-7B", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.2, + "output": 0.2 + }, + "type": "chat" + }, { "id": "BAAI/bge-large-en-v1.5", "name": "BAAI/bge-large-en-v1.5", @@ -248370,24 +248736,6 @@ }, "type": "rerank" }, - { - "id": "tencent/Hunyuan-MT-7B", - "name": "tencent/Hunyuan-MT-7B", - "display_name": "tencent/Hunyuan-MT-7B", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.2, - "output": 0.2 - }, - "type": "chat" - }, { "id": "V3", "name": "V3", @@ -248623,6 +248971,47 @@ }, "type": "chat" }, + { + "id": "stepfun-ai/step3", + "name": "stepfun-ai/step3", + "display_name": "stepfun-ai/step3", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 1.1, + "output": 2.75 + }, + "type": "chat" + }, + { + "id": "text-embedding-v4", + "name": "text-embedding-v4", + "display_name": "text-embedding-v4", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.08, + "output": 0.08 + }, + "type": "embedding" + }, { "id": "qwen-plus-2025-07-28", "name": "qwen-plus-2025-07-28", @@ -248702,45 +249091,34 @@ "type": "chat" }, { - "id": "stepfun-ai/step3", - "name": "stepfun-ai/step3", - "display_name": "stepfun-ai/step3", + "id": "qwen-turbo-latest", + "name": "qwen-turbo-latest", + "display_name": "qwen-turbo-latest", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false - }, - "cost": { - "input": 1.1, - "output": 2.75 - }, - "type": "chat" - }, - { - "id": "text-embedding-v4", - "name": "text-embedding-v4", - "display_name": "text-embedding-v4", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 + "supported": true }, - "tool_call": false, - "reasoning": { - "supported": false + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.08, - "output": 0.08 + "input": 0.046, + "output": 0.092, + "cache_read": 0.0092 }, - "type": "embedding" + "type": "chat" }, { "id": "AiHubmix-Phi-4-mini-reasoning", @@ -248765,36 +249143,6 @@ }, "type": "chat" }, - { - "id": "qwen-turbo-latest", - "name": "qwen-turbo-latest", - "display_name": "qwen-turbo-latest", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "cost": { - "input": 0.046, - "output": 0.092, - "cache_read": 0.0092 - }, - "type": "chat" - }, { "id": "aihub-Phi-4-multimodal-instruct", "name": "aihub-Phi-4-multimodal-instruct", @@ -248850,6 +249198,29 @@ }, "type": "chat" }, + { + "id": "aihub-Phi-4-mini-instruct", + "name": "aihub-Phi-4-mini-instruct", + "display_name": "aihub-Phi-4-mini-instruct", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 128000, + "output": 128000 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.12, + "output": 0.48 + }, + "type": "chat" + }, { "id": "grok-3", "name": "grok-3", @@ -248869,25 +249240,44 @@ "type": "chat" }, { - "id": "aihub-Phi-4-mini-instruct", - "name": "aihub-Phi-4-mini-instruct", - "display_name": "aihub-Phi-4-mini-instruct", + "id": "doubao-embedding-text-240715", + "name": "doubao-embedding-text-240715", + "display_name": "doubao-embedding-text-240715", "modalities": { "input": [ "text" ] }, "limit": { - "context": 128000, - "output": 128000 + "context": 8192, + "output": 8192 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.12, - "output": 0.48 + "input": 0.7, + "output": 0.7 + }, + "type": "embedding" + }, + { + "id": "grok-3-beta", + "name": "grok-3-beta", + "display_name": "grok-3-beta", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 3, + "output": 15, + "cache_read": 0 }, "type": "chat" }, @@ -248987,32 +249377,39 @@ "type": "chat" }, { - "id": "doubao-embedding-text-240715", - "name": "doubao-embedding-text-240715", - "display_name": "doubao-embedding-text-240715", - "modalities": { - "input": [ - "text" - ] - }, + "id": "qwen3-8b", + "name": "qwen3-8b", + "display_name": "qwen3-8b", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.7, - "output": 0.7 + "input": 0.08, + "output": 0.8, + "cache_read": 0 }, - "type": "embedding" + "type": "chat" }, { - "id": "grok-3-beta", - "name": "grok-3-beta", - "display_name": "grok-3-beta", + "id": "grok-3-fast", + "name": "grok-3-fast", + "display_name": "grok-3-fast", "limit": { "context": 8192, "output": 8192 @@ -249022,16 +249419,16 @@ "supported": false }, "cost": { - "input": 3, - "output": 15, + "input": 5.5, + "output": 27.5, "cache_read": 0 }, "type": "chat" }, { - "id": "grok-3-fast", - "name": "grok-3-fast", - "display_name": "grok-3-fast", + "id": "grok-3-fast-beta", + "name": "grok-3-fast-beta", + "display_name": "grok-3-fast-beta", "limit": { "context": 8192, "output": 8192 @@ -249048,31 +249445,20 @@ "type": "chat" }, { - "id": "qwen3-8b", - "name": "qwen3-8b", - "display_name": "qwen3-8b", + "id": "grok-3-mini", + "name": "grok-3-mini", + "display_name": "grok-3-mini", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.08, - "output": 0.8, + "input": 0.3, + "output": 0.501, "cache_read": 0 }, "type": "chat" @@ -249126,39 +249512,31 @@ "type": "chat" }, { - "id": "grok-3-fast-beta", - "name": "grok-3-fast-beta", - "display_name": "grok-3-fast-beta", + "id": "qwen3-1.7b", + "name": "qwen3-1.7b", + "display_name": "qwen3-1.7b", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false - }, - "cost": { - "input": 5.5, - "output": 27.5, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "grok-3-mini", - "name": "grok-3-mini", - "display_name": "grok-3-mini", - "limit": { - "context": 8192, - "output": 8192 + "supported": true }, - "tool_call": false, - "reasoning": { - "supported": false + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.3, - "output": 0.501, + "input": 0.046, + "output": 0.46, "cache_read": 0 }, "type": "chat" @@ -249183,39 +249561,9 @@ "type": "chat" }, { - "id": "qwen3-1.7b", - "name": "qwen3-1.7b", - "display_name": "qwen3-1.7b", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } - }, - "cost": { - "input": 0.046, - "output": 0.46, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "qwen3-0.6b", - "name": "qwen3-0.6b", - "display_name": "qwen3-0.6b", + "id": "qwen3-0.6b", + "name": "qwen3-0.6b", + "display_name": "qwen3-0.6b", "limit": { "context": 8192, "output": 8192 @@ -249563,24 +249911,6 @@ }, "type": "chat" }, - { - "id": "qwen-3-235b-a22b-instruct-2507", - "name": "qwen-3-235b-a22b-instruct-2507", - "display_name": "qwen-3-235b-a22b-instruct-2507", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.28, - "output": 1.4 - }, - "type": "chat" - }, { "id": "deepseek-ai/Janus-Pro-7B", "name": "deepseek-ai/Janus-Pro-7B", @@ -249600,73 +249930,9 @@ "type": "chat" }, { - "id": "coding-glm-4.5-air", - "name": "coding-glm-4.5-air", - "display_name": "coding-glm-4.5-air", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.014, - "output": 0.084 - }, - "type": "chat" - }, - { - "id": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", - "name": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", - "display_name": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.066, - "output": 0.264 - }, - "type": "chat" - }, - { - "id": "glm-4.5-air", - "name": "glm-4.5-air", - "display_name": "glm-4.5-air", - "modalities": { - "input": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 131072 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.14, - "output": 0.84 - }, - "type": "chat" - }, - { - "id": "gpt-4-32k", - "name": "gpt-4-32k", - "display_name": "gpt-4-32k", + "id": "qwen-3-235b-a22b-instruct-2507", + "name": "qwen-3-235b-a22b-instruct-2507", + "display_name": "qwen-3-235b-a22b-instruct-2507", "limit": { "context": 8192, "output": 8192 @@ -249676,8 +249942,8 @@ "supported": false }, "cost": { - "input": 60, - "output": 120 + "input": 0.28, + "output": 1.4 }, "type": "chat" }, @@ -249805,6 +250071,88 @@ }, "type": "chat" }, + { + "id": "coding-glm-4.5-air", + "name": "coding-glm-4.5-air", + "display_name": "coding-glm-4.5-air", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.014, + "output": 0.084 + }, + "type": "chat" + }, + { + "id": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", + "name": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", + "display_name": "deepinfra-nvidia-nemotron-3-nano-30b-a3b2", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.066, + "output": 0.264 + }, + "type": "chat" + }, + { + "id": "glm-4.5-air", + "name": "glm-4.5-air", + "display_name": "glm-4.5-air", + "modalities": { + "input": [ + "text" + ] + }, + "limit": { + "context": 131072, + "output": 131072 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.14, + "output": 0.84 + }, + "type": "chat" + }, + { + "id": "gpt-4-32k", + "name": "gpt-4-32k", + "display_name": "gpt-4-32k", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 60, + "output": 120 + }, + "type": "chat" + }, { "id": "Qwen/QVQ-72B-Preview", "name": "Qwen/QVQ-72B-Preview", @@ -249942,30 +250290,6 @@ }, "type": "chat" }, - { - "id": "wan2.6-t2i", - "name": "wan2.6-t2i", - "display_name": "wan2.6-t2i", - "modalities": { - "input": [ - "image", - "text" - ] - }, - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2, - "output": 0 - }, - "type": "imageGeneration" - }, { "id": "grok-2-1212", "name": "grok-2-1212", @@ -249985,90 +250309,33 @@ "type": "chat" }, { - "id": "gpt-image-test", - "name": "gpt-image-test", - "display_name": "gpt-image-test", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 5, - "output": 40, - "cache_read": 0 - }, - "type": "chat" - }, - { - "id": "grok-4.20-beta-0309-non-reasoning", - "name": "grok-4.20-beta-0309-non-reasoning", - "display_name": "grok-4.20-beta-0309-non-reasoning", + "id": "wan2.6-t2i", + "name": "wan2.6-t2i", + "display_name": "wan2.6-t2i", "modalities": { "input": [ - "text", - "image" + "image", + "text" ] }, "limit": { - "context": 2000000, - "output": 2000000 + "context": 8192, + "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { "input": 2, - "output": 6, - "cache_read": 0.2 + "output": 0 }, - "type": "chat" + "type": "imageGeneration" }, { - "id": "grok-4.20-beta-0309-reasoning", - "name": "grok-4.20-beta-0309-reasoning", - "display_name": "grok-4.20-beta-0309-reasoning", - "modalities": { - "input": [ - "text", - "image" - ] - }, - "limit": { - "context": 2000000, - "output": 2000000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "cost": { - "input": 2, - "output": 6, - "cache_read": 0.2 - }, - "type": "chat" - }, - { - "id": "grok-4.20-multi-agent-beta-0309", - "name": "grok-4.20-multi-agent-beta-0309", - "display_name": "grok-4.20-multi-agent-beta-0309", + "id": "grok-4.20-multi-agent-beta-0309", + "name": "grok-4.20-multi-agent-beta-0309", + "display_name": "grok-4.20-multi-agent-beta-0309", "modalities": { "input": [ "text", @@ -250492,9 +250759,9 @@ "type": "chat" }, { - "id": "Baichuan3-Turbo", - "name": "Baichuan3-Turbo", - "display_name": "Baichuan3-Turbo", + "id": "gpt-image-test", + "name": "gpt-image-test", + "display_name": "gpt-image-test", "limit": { "context": 8192, "output": 8192 @@ -250504,51 +250771,78 @@ "supported": false }, "cost": { - "input": 1.9, - "output": 1.9 + "input": 5, + "output": 40, + "cache_read": 0 }, "type": "chat" }, { - "id": "Baichuan3-Turbo-128k", - "name": "Baichuan3-Turbo-128k", - "display_name": "Baichuan3-Turbo-128k", + "id": "grok-4.20-beta-0309-non-reasoning", + "name": "grok-4.20-beta-0309-non-reasoning", + "display_name": "grok-4.20-beta-0309-non-reasoning", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { - "context": 8192, - "output": 8192 + "context": 2000000, + "output": 2000000 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } }, "cost": { - "input": 3.8, - "output": 3.8 + "input": 2, + "output": 6, + "cache_read": 0.2 }, "type": "chat" }, { - "id": "Baichuan4", - "name": "Baichuan4", - "display_name": "Baichuan4", + "id": "grok-4.20-beta-0309-reasoning", + "name": "grok-4.20-beta-0309-reasoning", + "display_name": "grok-4.20-beta-0309-reasoning", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { - "context": 8192, - "output": 8192 + "context": 2000000, + "output": 2000000 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } }, "cost": { - "input": 16, - "output": 16 + "input": 2, + "output": 6, + "cache_read": 0.2 }, "type": "chat" }, { - "id": "Baichuan4-Air", - "name": "Baichuan4-Air", - "display_name": "Baichuan4-Air", + "id": "deepseek-ai/deepseek-llm-67b-chat", + "name": "deepseek-ai/deepseek-llm-67b-chat", + "display_name": "deepseek-ai/deepseek-llm-67b-chat", "limit": { "context": 8192, "output": 8192 @@ -250564,9 +250858,9 @@ "type": "chat" }, { - "id": "Baichuan4-Turbo", - "name": "Baichuan4-Turbo", - "display_name": "Baichuan4-Turbo", + "id": "deepseek-ai/deepseek-vl2", + "name": "deepseek-ai/deepseek-vl2", + "display_name": "deepseek-ai/deepseek-vl2", "limit": { "context": 8192, "output": 8192 @@ -250576,15 +250870,15 @@ "supported": false }, "cost": { - "input": 2.4, - "output": 2.4 + "input": 0.16, + "output": 0.16 }, "type": "chat" }, { - "id": "DeepSeek-v3", - "name": "DeepSeek-v3", - "display_name": "DeepSeek-v3", + "id": "deepseek-v3", + "name": "deepseek-v3", + "display_name": "deepseek-v3", "limit": { "context": 8192, "output": 8192 @@ -250595,14 +250889,20 @@ }, "cost": { "input": 0.272, - "output": 1.088 + "output": 1.088, + "cache_read": 0 }, "type": "chat" }, { - "id": "Doubao-1.5-lite-32k", - "name": "Doubao-1.5-lite-32k", - "display_name": "Doubao-1.5-lite-32k", + "id": "distil-whisper-large-v3-en", + "name": "distil-whisper-large-v3-en", + "display_name": "distil-whisper-large-v3-en", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -250612,16 +250912,15 @@ "supported": false }, "cost": { - "input": 0.05, - "output": 0.1, - "cache_read": 0.01 + "input": 5.556, + "output": 5.556 }, "type": "chat" }, { - "id": "Doubao-1.5-pro-256k", - "name": "Doubao-1.5-pro-256k", - "display_name": "Doubao-1.5-pro-256k", + "id": "doubao-1-5-thinking-vision-pro-250428", + "name": "doubao-1-5-thinking-vision-pro-250428", + "display_name": "doubao-1-5-thinking-vision-pro-250428", "limit": { "context": 8192, "output": 8192 @@ -250631,16 +250930,16 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 1.44, - "cache_read": 0.8 + "input": 2, + "output": 2, + "cache_read": 2 }, "type": "chat" }, { - "id": "Doubao-1.5-pro-32k", - "name": "Doubao-1.5-pro-32k", - "display_name": "Doubao-1.5-pro-32k", + "id": "fx-flux-2-pro", + "name": "fx-flux-2-pro", + "display_name": "fx-flux-2-pro", "limit": { "context": 8192, "output": 8192 @@ -250650,34 +250949,68 @@ "supported": false }, "cost": { - "input": 0.134, - "output": 0.335, - "cache_read": 0.0268 + "input": 2, + "output": 0, + "cache_read": 0 }, "type": "chat" }, { - "id": "Doubao-1.5-vision-pro-32k", - "name": "Doubao-1.5-vision-pro-32k", - "display_name": "Doubao-1.5-vision-pro-32k", + "id": "gemini-2.5-pro-exp-03-25", + "name": "gemini-2.5-pro-exp-03-25", + "display_name": "gemini-2.5-pro-exp-03-25", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video" + ] + }, "limit": { "context": 8192, "output": 8192 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "default_enabled": true, + "mode": "budget", + "budget": { + "default": -1, + "min": 128, + "max": 32768, + "auto": -1, + "unit": "tokens" + }, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thought_signatures" + ] + } }, "cost": { - "input": 0.46, - "output": 1.38 + "input": 1.25, + "output": 5, + "cache_read": 0.125 }, "type": "chat" }, { - "id": "Doubao-lite-128k", - "name": "Doubao-lite-128k", - "display_name": "Doubao-lite-128k", + "id": "gemini-embedding-exp-03-07", + "name": "gemini-embedding-exp-03-07", + "display_name": "gemini-embedding-exp-03-07", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -250687,16 +251020,15 @@ "supported": false }, "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.14 + "input": 0.02, + "output": 0.02 }, - "type": "chat" + "type": "embedding" }, { - "id": "Doubao-lite-32k", - "name": "Doubao-lite-32k", - "display_name": "Doubao-lite-32k", + "id": "gemini-exp-1114", + "name": "gemini-exp-1114", + "display_name": "gemini-exp-1114", "limit": { "context": 8192, "output": 8192 @@ -250706,16 +251038,15 @@ "supported": false }, "cost": { - "input": 0.06, - "output": 0.12, - "cache_read": 0.012 + "input": 1.25, + "output": 5 }, "type": "chat" }, { - "id": "Doubao-lite-4k", - "name": "Doubao-lite-4k", - "display_name": "Doubao-lite-4k", + "id": "gemini-exp-1121", + "name": "gemini-exp-1121", + "display_name": "gemini-exp-1121", "limit": { "context": 8192, "output": 8192 @@ -250725,16 +251056,15 @@ "supported": false }, "cost": { - "input": 0.06, - "output": 0.12, - "cache_read": 0.06 + "input": 1.25, + "output": 5 }, "type": "chat" }, { - "id": "Doubao-pro-128k", - "name": "Doubao-pro-128k", - "display_name": "Doubao-pro-128k", + "id": "gemini-pro", + "name": "gemini-pro", + "display_name": "gemini-pro", "limit": { "context": 8192, "output": 8192 @@ -250744,15 +251074,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 1.44 + "input": 0.2, + "output": 0.6 }, "type": "chat" }, { - "id": "Doubao-pro-256k", - "name": "Doubao-pro-256k", - "display_name": "Doubao-pro-256k", + "id": "gemini-pro-vision", + "name": "gemini-pro-vision", + "display_name": "gemini-pro-vision", "limit": { "context": 8192, "output": 8192 @@ -250762,16 +251092,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 1.44, - "cache_read": 0.8 + "input": 1, + "output": 1 }, "type": "chat" }, { - "id": "Doubao-pro-32k", - "name": "Doubao-pro-32k", - "display_name": "Doubao-pro-32k", + "id": "gemma-7b-it", + "name": "gemma-7b-it", + "display_name": "gemma-7b-it", "limit": { "context": 8192, "output": 8192 @@ -250781,16 +251110,15 @@ "supported": false }, "cost": { - "input": 0.14, - "output": 0.35, - "cache_read": 0.028 + "input": 0.1, + "output": 0.1 }, "type": "chat" }, { - "id": "Doubao-pro-4k", - "name": "Doubao-pro-4k", - "display_name": "Doubao-pro-4k", + "id": "glm-3-turbo", + "name": "glm-3-turbo", + "display_name": "glm-3-turbo", "limit": { "context": 8192, "output": 8192 @@ -250800,38 +251128,33 @@ "supported": false }, "cost": { - "input": 0.14, - "output": 0.35 + "input": 0.71, + "output": 0.71 }, "type": "chat" }, { - "id": "GPT-OSS-20B", - "name": "GPT-OSS-20B", - "display_name": "GPT-OSS-20B", + "id": "glm-4", + "name": "glm-4", + "display_name": "glm-4", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { - "input": 0.11, - "output": 0.55 + "input": 14.2, + "output": 14.2 }, "type": "chat" }, { - "id": "Gryphe/MythoMax-L2-13b", - "name": "Gryphe/MythoMax-L2-13b", - "display_name": "Gryphe/MythoMax-L2-13b", + "id": "glm-4-flash", + "name": "glm-4-flash", + "display_name": "glm-4-flash", "limit": { "context": 8192, "output": 8192 @@ -250841,20 +251164,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.4 + "input": 0.1, + "output": 0.1 }, "type": "chat" }, { - "id": "MiniMax-Text-01", - "name": "MiniMax-Text-01", - "display_name": "MiniMax-Text-01", - "modalities": { - "input": [ - "text" - ] - }, + "id": "glm-4-plus", + "name": "glm-4-plus", + "display_name": "glm-4-plus", "limit": { "context": 8192, "output": 8192 @@ -250864,15 +251182,20 @@ "supported": false }, "cost": { - "input": 0.14, - "output": 1.12 + "input": 8, + "output": 8 }, "type": "chat" }, { - "id": "Mistral-large-2407", - "name": "Mistral-large-2407", - "display_name": "Mistral-large-2407", + "id": "glm-4.5-airx", + "name": "glm-4.5-airx", + "display_name": "glm-4.5-airx", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -250882,15 +251205,16 @@ "supported": false }, "cost": { - "input": 3, - "output": 9 + "input": 1.1, + "output": 4.51, + "cache_read": 0.22 }, "type": "chat" }, { - "id": "Qwen/Qwen2-1.5B-Instruct", - "name": "Qwen/Qwen2-1.5B-Instruct", - "display_name": "Qwen/Qwen2-1.5B-Instruct", + "id": "glm-4v", + "name": "glm-4v", + "display_name": "glm-4v", "limit": { "context": 8192, "output": 8192 @@ -250900,15 +251224,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 14.2, + "output": 14.2 }, "type": "chat" }, { - "id": "Qwen/Qwen2-57B-A14B-Instruct", - "name": "Qwen/Qwen2-57B-A14B-Instruct", - "display_name": "Qwen/Qwen2-57B-A14B-Instruct", + "id": "glm-4v-plus", + "name": "glm-4v-plus", + "display_name": "glm-4v-plus", "limit": { "context": 8192, "output": 8192 @@ -250918,15 +251242,15 @@ "supported": false }, "cost": { - "input": 0.24, - "output": 0.24 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "Qwen/Qwen2-72B-Instruct", - "name": "Qwen/Qwen2-72B-Instruct", - "display_name": "Qwen/Qwen2-72B-Instruct", + "id": "google-gemma-3-12b-it", + "name": "google-gemma-3-12b-it", + "display_name": "google-gemma-3-12b-it", "limit": { "context": 8192, "output": 8192 @@ -250936,15 +251260,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 0.8 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "Qwen/Qwen2-7B-Instruct", - "name": "Qwen/Qwen2-7B-Instruct", - "display_name": "Qwen/Qwen2-7B-Instruct", + "id": "google-gemma-3-27b-it", + "name": "google-gemma-3-27b-it", + "display_name": "google-gemma-3-27b-it", "limit": { "context": 8192, "output": 8192 @@ -250954,15 +251278,16 @@ "supported": false }, "cost": { - "input": 0.08, - "output": 0.08 + "input": 0.2, + "output": 0.2, + "cache_read": 0 }, "type": "chat" }, { - "id": "Qwen/Qwen2.5-32B-Instruct", - "name": "Qwen/Qwen2.5-32B-Instruct", - "display_name": "Qwen/Qwen2.5-32B-Instruct", + "id": "google-gemma-3-4b-it", + "name": "google-gemma-3-4b-it", + "display_name": "google-gemma-3-4b-it", "limit": { "context": 8192, "output": 8192 @@ -250972,15 +251297,16 @@ "supported": false }, "cost": { - "input": 0.6, - "output": 0.6 + "input": 0.2, + "output": 0.2, + "cache_read": 0 }, "type": "chat" }, { - "id": "Qwen/Qwen2.5-72B-Instruct", - "name": "Qwen/Qwen2.5-72B-Instruct", - "display_name": "Qwen/Qwen2.5-72B-Instruct", + "id": "google/gemini-exp-1114", + "name": "google/gemini-exp-1114", + "display_name": "google/gemini-exp-1114", "limit": { "context": 8192, "output": 8192 @@ -250990,15 +251316,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 0.8 + "input": 1.25, + "output": 5 }, "type": "chat" }, { - "id": "Qwen/Qwen2.5-72B-Instruct-128K", - "name": "Qwen/Qwen2.5-72B-Instruct-128K", - "display_name": "Qwen/Qwen2.5-72B-Instruct-128K", + "id": "google/gemma-2-27b-it", + "name": "google/gemma-2-27b-it", + "display_name": "google/gemma-2-27b-it", "limit": { "context": 8192, "output": 8192 @@ -251014,9 +251340,9 @@ "type": "chat" }, { - "id": "Qwen/Qwen2.5-7B-Instruct", - "name": "Qwen/Qwen2.5-7B-Instruct", - "display_name": "Qwen/Qwen2.5-7B-Instruct", + "id": "google/gemma-2-9b-it:free", + "name": "google/gemma-2-9b-it:free", + "display_name": "google/gemma-2-9b-it:free", "limit": { "context": 8192, "output": 8192 @@ -251026,15 +251352,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.4 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "Qwen/Qwen2.5-Coder-32B-Instruct", - "name": "Qwen/Qwen2.5-Coder-32B-Instruct", - "display_name": "Qwen/Qwen2.5-Coder-32B-Instruct", + "id": "gpt-3.5-turbo", + "name": "gpt-3.5-turbo", + "display_name": "gpt-3.5-turbo", "limit": { "context": 8192, "output": 8192 @@ -251044,50 +251370,33 @@ "supported": false }, "cost": { - "input": 0.16, - "output": 0.16 + "input": 0.5, + "output": 1.5 }, "type": "chat" }, { - "id": "Qwen3-235B-A22B-Thinking-2507", - "name": "Qwen3-235B-A22B-Thinking-2507", - "display_name": "Qwen3-235B-A22B-Thinking-2507", + "id": "gpt-3.5-turbo-0301", + "name": "gpt-3.5-turbo-0301", + "display_name": "gpt-3.5-turbo-0301", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.28, - "output": 2.8 + "input": 1.5, + "output": 1.5 }, "type": "chat" }, { - "id": "Stable-Diffusion-3-5-Large", - "name": "Stable-Diffusion-3-5-Large", - "display_name": "Stable-Diffusion-3-5-Large", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "gpt-3.5-turbo-0613", + "name": "gpt-3.5-turbo-0613", + "display_name": "gpt-3.5-turbo-0613", "limit": { "context": 8192, "output": 8192 @@ -251097,16 +251406,15 @@ "supported": false }, "cost": { - "input": 4, - "output": 4, - "cache_read": 0 + "input": 1.5, + "output": 2 }, - "type": "imageGeneration" + "type": "chat" }, { - "id": "WizardLM/WizardCoder-Python-34B-V1.0", - "name": "WizardLM/WizardCoder-Python-34B-V1.0", - "display_name": "WizardLM/WizardCoder-Python-34B-V1.0", + "id": "gpt-3.5-turbo-1106", + "name": "gpt-3.5-turbo-1106", + "display_name": "gpt-3.5-turbo-1106", "limit": { "context": 8192, "output": 8192 @@ -251116,15 +251424,15 @@ "supported": false }, "cost": { - "input": 0.9, - "output": 0.9 + "input": 1, + "output": 2 }, "type": "chat" }, { - "id": "ahm-Phi-3-5-MoE-instruct", - "name": "ahm-Phi-3-5-MoE-instruct", - "display_name": "ahm-Phi-3-5-MoE-instruct", + "id": "gpt-3.5-turbo-16k", + "name": "gpt-3.5-turbo-16k", + "display_name": "gpt-3.5-turbo-16k", "limit": { "context": 8192, "output": 8192 @@ -251134,15 +251442,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 1.6 + "input": 3, + "output": 4 }, "type": "chat" }, { - "id": "ahm-Phi-3-5-mini-instruct", - "name": "ahm-Phi-3-5-mini-instruct", - "display_name": "ahm-Phi-3-5-mini-instruct", + "id": "gpt-3.5-turbo-16k-0613", + "name": "gpt-3.5-turbo-16k-0613", + "display_name": "gpt-3.5-turbo-16k-0613", "limit": { "context": 8192, "output": 8192 @@ -251152,21 +251460,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 3 + "input": 3, + "output": 4 }, "type": "chat" }, { - "id": "ahm-Phi-3-5-vision-instruct", - "name": "ahm-Phi-3-5-vision-instruct", - "display_name": "ahm-Phi-3-5-vision-instruct", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "gpt-3.5-turbo-instruct", + "name": "gpt-3.5-turbo-instruct", + "display_name": "gpt-3.5-turbo-instruct", "limit": { "context": 8192, "output": 8192 @@ -251176,15 +251478,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 1.6 + "input": 1.5, + "output": 2 }, "type": "chat" }, { - "id": "ahm-Phi-3-medium-128k", - "name": "ahm-Phi-3-medium-128k", - "display_name": "ahm-Phi-3-medium-128k", + "id": "gpt-4", + "name": "gpt-4", + "display_name": "gpt-4", "limit": { "context": 8192, "output": 8192 @@ -251194,15 +251496,15 @@ "supported": false }, "cost": { - "input": 6, - "output": 18 + "input": 30, + "output": 60 }, "type": "chat" }, { - "id": "ahm-Phi-3-medium-4k", - "name": "ahm-Phi-3-medium-4k", - "display_name": "ahm-Phi-3-medium-4k", + "id": "gpt-4-0125-preview", + "name": "gpt-4-0125-preview", + "display_name": "gpt-4-0125-preview", "limit": { "context": 8192, "output": 8192 @@ -251212,15 +251514,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 3 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "ahm-Phi-3-small-128k", - "name": "ahm-Phi-3-small-128k", - "display_name": "ahm-Phi-3-small-128k", + "id": "gpt-4-0314", + "name": "gpt-4-0314", + "display_name": "gpt-4-0314", "limit": { "context": 8192, "output": 8192 @@ -251230,15 +251532,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 3 + "input": 30, + "output": 60 }, "type": "chat" }, { - "id": "aihubmix-Codestral-2501", - "name": "aihubmix-Codestral-2501", - "display_name": "aihubmix-Codestral-2501", + "id": "gpt-4-0613", + "name": "gpt-4-0613", + "display_name": "gpt-4-0613", "limit": { "context": 8192, "output": 8192 @@ -251248,20 +251550,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 1.2 + "input": 30, + "output": 60 }, "type": "chat" }, { - "id": "aihubmix-Cohere-command-r", - "name": "aihubmix-Cohere-command-r", - "display_name": "aihubmix-Cohere-command-r", - "modalities": { - "input": [ - "text" - ] - }, + "id": "gpt-4-1106-preview", + "name": "gpt-4-1106-preview", + "display_name": "gpt-4-1106-preview", "limit": { "context": 8192, "output": 8192 @@ -251271,15 +251568,15 @@ "supported": false }, "cost": { - "input": 0.64, - "output": 1.92 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "aihubmix-Jamba-1-5-Large", - "name": "aihubmix-Jamba-1-5-Large", - "display_name": "aihubmix-Jamba-1-5-Large", + "id": "gpt-4-32k-0314", + "name": "gpt-4-32k-0314", + "display_name": "gpt-4-32k-0314", "limit": { "context": 8192, "output": 8192 @@ -251289,15 +251586,15 @@ "supported": false }, "cost": { - "input": 2.2, - "output": 8.8 + "input": 60, + "output": 120 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-1-405B-Instruct", - "name": "aihubmix-Llama-3-1-405B-Instruct", - "display_name": "aihubmix-Llama-3-1-405B-Instruct", + "id": "gpt-4-32k-0613", + "name": "gpt-4-32k-0613", + "display_name": "gpt-4-32k-0613", "limit": { "context": 8192, "output": 8192 @@ -251307,15 +251604,15 @@ "supported": false }, "cost": { - "input": 5, - "output": 15 + "input": 60, + "output": 120 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-1-70B-Instruct", - "name": "aihubmix-Llama-3-1-70B-Instruct", - "display_name": "aihubmix-Llama-3-1-70B-Instruct", + "id": "gpt-4-turbo", + "name": "gpt-4-turbo", + "display_name": "gpt-4-turbo", "limit": { "context": 8192, "output": 8192 @@ -251325,15 +251622,15 @@ "supported": false }, "cost": { - "input": 0.6, - "output": 0.78 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-1-8B-Instruct", - "name": "aihubmix-Llama-3-1-8B-Instruct", - "display_name": "aihubmix-Llama-3-1-8B-Instruct", + "id": "gpt-4-turbo-2024-04-09", + "name": "gpt-4-turbo-2024-04-09", + "display_name": "gpt-4-turbo-2024-04-09", "limit": { "context": 8192, "output": 8192 @@ -251343,15 +251640,15 @@ "supported": false }, "cost": { - "input": 0.3, - "output": 0.6 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-2-11B-Vision", - "name": "aihubmix-Llama-3-2-11B-Vision", - "display_name": "aihubmix-Llama-3-2-11B-Vision", + "id": "gpt-4-turbo-preview", + "name": "gpt-4-turbo-preview", + "display_name": "gpt-4-turbo-preview", "limit": { "context": 8192, "output": 8192 @@ -251361,15 +251658,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.4 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-2-90B-Vision", - "name": "aihubmix-Llama-3-2-90B-Vision", - "display_name": "aihubmix-Llama-3-2-90B-Vision", + "id": "gpt-4-vision-preview", + "name": "gpt-4-vision-preview", + "display_name": "gpt-4-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -251379,33 +251676,40 @@ "supported": false }, "cost": { - "input": 2.4, - "output": 2.4 + "input": 10, + "output": 30 }, "type": "chat" }, { - "id": "aihubmix-Llama-3-70B-Instruct", - "name": "aihubmix-Llama-3-70B-Instruct", - "display_name": "aihubmix-Llama-3-70B-Instruct", + "id": "gpt-4o-2024-05-13", + "name": "gpt-4o-2024-05-13", + "display_name": "gpt-4o-2024-05-13", "limit": { - "context": 8192, - "output": 8192 + "context": 128000, + "output": 128000 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.7, - "output": 0.7 + "input": 5, + "output": 15, + "cache_read": 5 }, "type": "chat" }, { - "id": "aihubmix-Mistral-large", - "name": "aihubmix-Mistral-large", - "display_name": "aihubmix-Mistral-large", + "id": "gpt-4o-mini-2024-07-18", + "name": "gpt-4o-mini-2024-07-18", + "display_name": "gpt-4o-mini-2024-07-18", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -251415,41 +251719,49 @@ "supported": false }, "cost": { - "input": 4, - "output": 12 + "input": 0.15, + "output": 0.6, + "cache_read": 0.075 }, "type": "chat" }, { - "id": "aihubmix-command-r-08-2024", - "name": "aihubmix-command-r-08-2024", - "display_name": "aihubmix-command-r-08-2024", + "id": "gpt-oss-20b", + "name": "gpt-oss-20b", + "display_name": "gpt-oss-20b", "modalities": { "input": [ "text" ] }, "limit": { - "context": 8192, - "output": 8192 + "context": 128000, + "output": 128000 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } }, "cost": { - "input": 0.2, - "output": 0.8 + "input": 0.11, + "output": 0.55 }, "type": "chat" }, { - "id": "aihubmix-command-r-plus", - "name": "aihubmix-command-r-plus", - "display_name": "aihubmix-command-r-plus", + "id": "grok-2-vision-1212", + "name": "grok-2-vision-1212", + "display_name": "grok-2-vision-1212", "modalities": { "input": [ - "text" + "text", + "image" ] }, "limit": { @@ -251461,18 +251773,19 @@ "supported": false }, "cost": { - "input": 3.84, - "output": 19.2 + "input": 1.8, + "output": 9 }, "type": "chat" }, { - "id": "aihubmix-command-r-plus-08-2024", - "name": "aihubmix-command-r-plus-08-2024", - "display_name": "aihubmix-command-r-plus-08-2024", + "id": "grok-vision-beta", + "name": "grok-vision-beta", + "display_name": "grok-vision-beta", "modalities": { "input": [ - "text" + "text", + "image" ] }, "limit": { @@ -251484,15 +251797,15 @@ "supported": false }, "cost": { - "input": 2.8, - "output": 11.2 + "input": 5.6, + "output": 16.8 }, "type": "chat" }, { - "id": "alicloud-deepseek-v3.2", - "name": "alicloud-deepseek-v3.2", - "display_name": "alicloud-deepseek-v3.2", + "id": "groq-llama-3.1-8b-instant", + "name": "groq-llama-3.1-8b-instant", + "display_name": "groq-llama-3.1-8b-instant", "limit": { "context": 8192, "output": 8192 @@ -251502,16 +251815,15 @@ "supported": false }, "cost": { - "input": 0.274, - "output": 0.411, - "cache_read": 0.0548 + "input": 0.055, + "output": 0.088 }, "type": "chat" }, { - "id": "alicloud-glm-4.7", - "name": "alicloud-glm-4.7", - "display_name": "alicloud-glm-4.7", + "id": "groq-llama-3.3-70b-versatile", + "name": "groq-llama-3.3-70b-versatile", + "display_name": "groq-llama-3.3-70b-versatile", "limit": { "context": 8192, "output": 8192 @@ -251521,16 +251833,15 @@ "supported": false }, "cost": { - "input": 0.41096, - "output": 1.917786, - "cache_read": 0.41096 + "input": 0.649, + "output": 0.869011 }, "type": "chat" }, { - "id": "alicloud-kimi-k2-thinking", - "name": "alicloud-kimi-k2-thinking", - "display_name": "alicloud-kimi-k2-thinking", + "id": "groq-llama-4-maverick-17b-128e-instruct", + "name": "groq-llama-4-maverick-17b-128e-instruct", + "display_name": "groq-llama-4-maverick-17b-128e-instruct", "limit": { "context": 8192, "output": 8192 @@ -251540,34 +251851,39 @@ "supported": false }, "cost": { - "input": 0.548, - "output": 2.192 + "input": 0.22, + "output": 0.66 }, "type": "chat" }, { - "id": "alicloud-kimi-k2.5", - "name": "alicloud-kimi-k2.5", - "display_name": "alicloud-kimi-k2.5", + "id": "groq-llama-4-scout-17b-16e-instruct", + "name": "groq-llama-4-scout-17b-16e-instruct", + "display_name": "groq-llama-4-scout-17b-16e-instruct", "limit": { - "context": 256000, - "output": 256000 + "context": 8192, + "output": 8192 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.548, - "output": 2.877, - "cache_read": 0.0959 + "input": 0.122, + "output": 0.366 }, "type": "chat" }, { - "id": "alicloud-minimax-m2.5", - "name": "alicloud-minimax-m2.5", - "display_name": "alicloud-minimax-m2.5", + "id": "imagen-4.0-generate-preview-05-20", + "name": "imagen-4.0-generate-preview-05-20", + "display_name": "imagen-4.0-generate-preview-05-20", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -251577,47 +251893,39 @@ "supported": false }, "cost": { - "input": 0.2876, - "output": 1.1504, - "cache_read": 0.05752 + "input": 2, + "output": 2, + "cache_read": 0 }, - "type": "chat" + "type": "imageGeneration" }, { - "id": "anthropic-opus-4-6", - "name": "anthropic-opus-4-6", - "display_name": "anthropic-opus-4-6", + "id": "jina-embeddings-v2-base-code", + "name": "jina-embeddings-v2-base-code", + "display_name": "jina-embeddings-v2-base-code", "modalities": { "input": [ - "text", - "image" + "text" ] }, "limit": { - "context": 200000, - "output": 200000 + "context": 8192, + "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { - "input": 5, - "output": 25, - "cache_read": 0.5 + "input": 0.05, + "output": 0.05 }, - "type": "chat" + "type": "embedding" }, { - "id": "azure-deepseek-v3.2", - "name": "azure-deepseek-v3.2", - "display_name": "azure-deepseek-v3.2", + "id": "learnlm-1.5-pro-experimental", + "name": "learnlm-1.5-pro-experimental", + "display_name": "learnlm-1.5-pro-experimental", "limit": { "context": 8192, "output": 8192 @@ -251627,15 +251935,15 @@ "supported": false }, "cost": { - "input": 0.58, - "output": 1.680028 + "input": 1.25, + "output": 5 }, "type": "chat" }, { - "id": "azure-deepseek-v3.2-speciale", - "name": "azure-deepseek-v3.2-speciale", - "display_name": "azure-deepseek-v3.2-speciale", + "id": "llama-3.1-405b-instruct", + "name": "llama-3.1-405b-instruct", + "display_name": "llama-3.1-405b-instruct", "limit": { "context": 8192, "output": 8192 @@ -251645,33 +251953,33 @@ "supported": false }, "cost": { - "input": 0.58, - "output": 1.680028 + "input": 4, + "output": 4 }, "type": "chat" }, { - "id": "azure-kimi-k2.5", - "name": "azure-kimi-k2.5", - "display_name": "azure-kimi-k2.5", + "id": "llama-3.1-405b-reasoning", + "name": "llama-3.1-405b-reasoning", + "display_name": "llama-3.1-405b-reasoning", "limit": { - "context": 256000, - "output": 256000 + "context": 8192, + "output": 8192 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 0.6, - "output": 3 + "input": 4, + "output": 4 }, "type": "chat" }, { - "id": "cbs-glm-4.7", - "name": "cbs-glm-4.7", - "display_name": "cbs-glm-4.7", + "id": "llama-3.1-70b-versatile", + "name": "llama-3.1-70b-versatile", + "display_name": "llama-3.1-70b-versatile", "limit": { "context": 8192, "output": 8192 @@ -251681,15 +251989,15 @@ "supported": false }, "cost": { - "input": 2.25, - "output": 2.749995 + "input": 0.6, + "output": 0.6 }, "type": "chat" }, { - "id": "cerebras-llama-3.3-70b", - "name": "cerebras-llama-3.3-70b", - "display_name": "cerebras-llama-3.3-70b", + "id": "llama-3.1-8b-instant", + "name": "llama-3.1-8b-instant", + "display_name": "llama-3.1-8b-instant", "limit": { "context": 8192, "output": 8192 @@ -251699,15 +252007,15 @@ "supported": false }, "cost": { - "input": 0.6, + "input": 0.3, "output": 0.6 }, "type": "chat" }, { - "id": "chatglm_lite", - "name": "chatglm_lite", - "display_name": "chatglm_lite", + "id": "llama-3.1-sonar-small-128k-online", + "name": "llama-3.1-sonar-small-128k-online", + "display_name": "llama-3.1-sonar-small-128k-online", "limit": { "context": 8192, "output": 8192 @@ -251717,15 +252025,15 @@ "supported": false }, "cost": { - "input": 0.2858, - "output": 0.2858 + "input": 0.3, + "output": 0.3 }, "type": "chat" }, { - "id": "chatglm_pro", - "name": "chatglm_pro", - "display_name": "chatglm_pro", + "id": "llama-3.2-11b-vision-preview", + "name": "llama-3.2-11b-vision-preview", + "display_name": "llama-3.2-11b-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -251735,15 +252043,15 @@ "supported": false }, "cost": { - "input": 1.4286, - "output": 1.4286 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "chatglm_std", - "name": "chatglm_std", - "display_name": "chatglm_std", + "id": "llama-3.2-1b-preview", + "name": "llama-3.2-1b-preview", + "display_name": "llama-3.2-1b-preview", "limit": { "context": 8192, "output": 8192 @@ -251753,15 +252061,15 @@ "supported": false }, "cost": { - "input": 0.7144, - "output": 0.7144 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "chatglm_turbo", - "name": "chatglm_turbo", - "display_name": "chatglm_turbo", + "id": "llama-3.2-3b-preview", + "name": "llama-3.2-3b-preview", + "display_name": "llama-3.2-3b-preview", "limit": { "context": 8192, "output": 8192 @@ -251771,15 +252079,15 @@ "supported": false }, "cost": { - "input": 0.7144, - "output": 0.7144 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "claude-2", - "name": "claude-2", - "display_name": "claude-2", + "id": "llama-3.2-90b-vision-preview", + "name": "llama-3.2-90b-vision-preview", + "display_name": "llama-3.2-90b-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -251789,15 +252097,15 @@ "supported": false }, "cost": { - "input": 8.8, - "output": 8.8 + "input": 2.4, + "output": 2.4 }, "type": "chat" }, { - "id": "claude-2.0", - "name": "claude-2.0", - "display_name": "claude-2.0", + "id": "llama2-70b-4096", + "name": "llama2-70b-4096", + "display_name": "llama2-70b-4096", "limit": { "context": 8192, "output": 8192 @@ -251807,15 +252115,15 @@ "supported": false }, "cost": { - "input": 8.8, - "output": 39.6 + "input": 0.5, + "output": 0.5 }, "type": "chat" }, { - "id": "claude-2.1", - "name": "claude-2.1", - "display_name": "claude-2.1", + "id": "llama2-70b-40960", + "name": "llama2-70b-40960", + "display_name": "llama2-70b-40960", "limit": { "context": 8192, "output": 8192 @@ -251825,21 +252133,15 @@ "supported": false }, "cost": { - "input": 8.8, - "output": 39.6 + "input": 0.5, + "output": 0.5 }, "type": "chat" }, { - "id": "claude-3-haiku-20240229", - "name": "claude-3-haiku-20240229", - "display_name": "claude-3-haiku-20240229", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "llama2-7b-2048", + "name": "llama2-7b-2048", + "display_name": "llama2-7b-2048", "limit": { "context": 8192, "output": 8192 @@ -251849,21 +252151,15 @@ "supported": false }, "cost": { - "input": 0.275, - "output": 0.275 + "input": 0.1, + "output": 0.1 }, "type": "chat" }, { - "id": "claude-3-haiku-20240307", - "name": "claude-3-haiku-20240307", - "display_name": "claude-3-haiku-20240307", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "llama3-70b-8192", + "name": "llama3-70b-8192", + "display_name": "llama3-70b-8192", "limit": { "context": 8192, "output": 8192 @@ -251873,21 +252169,15 @@ "supported": false }, "cost": { - "input": 0.275, - "output": 1.375 + "input": 0.7, + "output": 0.937288 }, "type": "chat" }, { - "id": "claude-3-sonnet-20240229", - "name": "claude-3-sonnet-20240229", - "display_name": "claude-3-sonnet-20240229", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "llama3-8b-8192", + "name": "llama3-8b-8192", + "display_name": "llama3-8b-8192", "limit": { "context": 8192, "output": 8192 @@ -251897,15 +252187,15 @@ "supported": false }, "cost": { - "input": 3.3, - "output": 16.5 + "input": 0.06, + "output": 0.12 }, "type": "chat" }, { - "id": "claude-instant-1", - "name": "claude-instant-1", - "display_name": "claude-instant-1", + "id": "llama3-groq-70b-8192-tool-use-preview", + "name": "llama3-groq-70b-8192-tool-use-preview", + "display_name": "llama3-groq-70b-8192-tool-use-preview", "limit": { "context": 8192, "output": 8192 @@ -251915,15 +252205,15 @@ "supported": false }, "cost": { - "input": 1.793, - "output": 1.793 + "input": 0.00089, + "output": 0.00089 }, "type": "chat" }, { - "id": "claude-instant-1.2", - "name": "claude-instant-1.2", - "display_name": "claude-instant-1.2", + "id": "llama3-groq-8b-8192-tool-use-preview", + "name": "llama3-groq-8b-8192-tool-use-preview", + "display_name": "llama3-groq-8b-8192-tool-use-preview", "limit": { "context": 8192, "output": 8192 @@ -251933,15 +252223,15 @@ "supported": false }, "cost": { - "input": 0.88, - "output": 3.96 + "input": 0.00019, + "output": 0.00019 }, "type": "chat" }, { - "id": "code-davinci-edit-001", - "name": "code-davinci-edit-001", - "display_name": "code-davinci-edit-001", + "id": "mai-image-2", + "name": "mai-image-2", + "display_name": "mai-image-2", "limit": { "context": 8192, "output": 8192 @@ -251951,15 +252241,16 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 2, + "output": 2, + "cache_read": 0 }, - "type": "chat" + "type": "imageGeneration" }, { - "id": "cogview-3", - "name": "cogview-3", - "display_name": "cogview-3", + "id": "meta-llama/Llama-3.2-90B-Vision-Instruct", + "name": "meta-llama/Llama-3.2-90B-Vision-Instruct", + "display_name": "meta-llama/Llama-3.2-90B-Vision-Instruct", "limit": { "context": 8192, "output": 8192 @@ -251969,15 +252260,15 @@ "supported": false }, "cost": { - "input": 35.5, - "output": 35.5 + "input": 0.5, + "output": 0.5 }, "type": "chat" }, { - "id": "cogview-3-plus", - "name": "cogview-3-plus", - "display_name": "cogview-3-plus", + "id": "meta-llama/llama-3.1-405b-instruct:free", + "name": "meta-llama/llama-3.1-405b-instruct:free", + "display_name": "meta-llama/llama-3.1-405b-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -251987,20 +252278,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 10 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "command", - "name": "command", - "display_name": "command", - "modalities": { - "input": [ - "text" - ] - }, + "id": "meta-llama/llama-3.1-70b-instruct:free", + "name": "meta-llama/llama-3.1-70b-instruct:free", + "display_name": "meta-llama/llama-3.1-70b-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -252010,15 +252296,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 2 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "command-light", - "name": "command-light", - "display_name": "command-light", + "id": "meta-llama/llama-3.1-8b-instruct:free", + "name": "meta-llama/llama-3.1-8b-instruct:free", + "display_name": "meta-llama/llama-3.1-8b-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -252028,15 +252314,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 2 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "command-light-nightly", - "name": "command-light-nightly", - "display_name": "command-light-nightly", + "id": "meta-llama/llama-3.2-11b-vision-instruct:free", + "name": "meta-llama/llama-3.2-11b-vision-instruct:free", + "display_name": "meta-llama/llama-3.2-11b-vision-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -252046,15 +252332,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 2 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "command-nightly", - "name": "command-nightly", - "display_name": "command-nightly", + "id": "meta-llama/llama-3.2-3b-instruct:free", + "name": "meta-llama/llama-3.2-3b-instruct:free", + "display_name": "meta-llama/llama-3.2-3b-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -252064,20 +252350,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 2 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "command-r", - "name": "command-r", - "display_name": "command-r", - "modalities": { - "input": [ - "text" - ] - }, + "id": "meta/llama-3.1-405b-instruct", + "name": "meta/llama-3.1-405b-instruct", + "display_name": "meta/llama-3.1-405b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252087,20 +252368,15 @@ "supported": false }, "cost": { - "input": 0.64, - "output": 1.92 + "input": 5, + "output": 5 }, "type": "chat" }, { - "id": "command-r-08-2024", - "name": "command-r-08-2024", - "display_name": "command-r-08-2024", - "modalities": { - "input": [ - "text" - ] - }, + "id": "meta/llama3-8B-chat", + "name": "meta/llama3-8B-chat", + "display_name": "meta/llama3-8B-chat", "limit": { "context": 8192, "output": 8192 @@ -252110,20 +252386,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.8 + "input": 0.3, + "output": 0.3 }, "type": "chat" }, { - "id": "command-r-plus", - "name": "command-r-plus", - "display_name": "command-r-plus", - "modalities": { - "input": [ - "text" - ] - }, + "id": "mistralai/mistral-7b-instruct:free", + "name": "mistralai/mistral-7b-instruct:free", + "display_name": "mistralai/mistral-7b-instruct:free", "limit": { "context": 8192, "output": 8192 @@ -252133,20 +252404,15 @@ "supported": false }, "cost": { - "input": 3.84, - "output": 19.2 + "input": 0.002, + "output": 0.002 }, "type": "chat" }, { - "id": "command-r-plus-08-2024", - "name": "command-r-plus-08-2024", - "display_name": "command-r-plus-08-2024", - "modalities": { - "input": [ - "text" - ] - }, + "id": "mm-minimax-m3", + "name": "mm-minimax-m3", + "display_name": "mm-minimax-m3", "limit": { "context": 8192, "output": 8192 @@ -252156,21 +252422,15 @@ "supported": false }, "cost": { - "input": 2.8, - "output": 11.2 + "input": 0.288, + "output": 1.152 }, "type": "chat" }, { - "id": "dall-e-2", - "name": "dall-e-2", - "display_name": "dall-e-2", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "moonshot-kimi-k2.5", + "name": "moonshot-kimi-k2.5", + "display_name": "moonshot-kimi-k2.5", "limit": { "context": 8192, "output": 8192 @@ -252180,15 +252440,16 @@ "supported": false }, "cost": { - "input": 16, - "output": 16 + "input": 0.6, + "output": 3, + "cache_read": 0.105 }, - "type": "imageGeneration" + "type": "chat" }, { - "id": "davinci", - "name": "davinci", - "display_name": "davinci", + "id": "moonshot-v1-128k", + "name": "moonshot-v1-128k", + "display_name": "moonshot-v1-128k", "limit": { "context": 8192, "output": 8192 @@ -252198,15 +252459,15 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 10, + "output": 10 }, "type": "chat" }, { - "id": "davinci-002", - "name": "davinci-002", - "display_name": "davinci-002", + "id": "moonshot-v1-128k-vision-preview", + "name": "moonshot-v1-128k-vision-preview", + "display_name": "moonshot-v1-128k-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -252216,15 +252477,15 @@ "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 10, + "output": 10 }, "type": "chat" }, { - "id": "deepinfra-llama-3.1-8b-instant", - "name": "deepinfra-llama-3.1-8b-instant", - "display_name": "deepinfra-llama-3.1-8b-instant", + "id": "moonshot-v1-32k", + "name": "moonshot-v1-32k", + "display_name": "moonshot-v1-32k", "limit": { "context": 8192, "output": 8192 @@ -252234,15 +252495,15 @@ "supported": false }, "cost": { - "input": 0.033, - "output": 0.054978 + "input": 4, + "output": 4 }, "type": "chat" }, { - "id": "deepinfra-llama-3.3-70b-instant-turbo", - "name": "deepinfra-llama-3.3-70b-instant-turbo", - "display_name": "deepinfra-llama-3.3-70b-instant-turbo", + "id": "moonshot-v1-32k-vision-preview", + "name": "moonshot-v1-32k-vision-preview", + "display_name": "moonshot-v1-32k-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -252252,15 +252513,15 @@ "supported": false }, "cost": { - "input": 0.11, - "output": 0.352 + "input": 4, + "output": 4 }, "type": "chat" }, { - "id": "deepinfra-llama-4-maverick-17b-128e-instruct", - "name": "deepinfra-llama-4-maverick-17b-128e-instruct", - "display_name": "deepinfra-llama-4-maverick-17b-128e-instruct", + "id": "moonshot-v1-8k", + "name": "moonshot-v1-8k", + "display_name": "moonshot-v1-8k", "limit": { "context": 8192, "output": 8192 @@ -252270,15 +252531,15 @@ "supported": false }, "cost": { - "input": 0.33, - "output": 1.32 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "deepinfra-llama-4-scout-17b-16e-instruct", - "name": "deepinfra-llama-4-scout-17b-16e-instruct", - "display_name": "deepinfra-llama-4-scout-17b-16e-instruct", + "id": "moonshot-v1-8k-vision-preview", + "name": "moonshot-v1-8k-vision-preview", + "display_name": "moonshot-v1-8k-vision-preview", "limit": { "context": 8192, "output": 8192 @@ -252288,16 +252549,15 @@ "supported": false }, "cost": { - "input": 0.088, - "output": 0.33, - "cache_read": 0 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-Coder-V2-Instruct", - "name": "deepseek-ai/DeepSeek-Coder-V2-Instruct", - "display_name": "deepseek-ai/DeepSeek-Coder-V2-Instruct", + "id": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", + "name": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", + "display_name": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", "limit": { "context": 8192, "output": 8192 @@ -252307,38 +252567,50 @@ "supported": false }, "cost": { - "input": 0.16, - "output": 0.32 + "input": 0.5, + "output": 0.5, + "cache_read": 0 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", + "id": "o1-mini-2024-09-12", + "name": "o1-mini-2024-09-12", + "display_name": "o1-mini-2024-09-12", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true + "supported": true, + "default": true }, "extra_capabilities": { "reasoning": { - "supported": true + "supported": true, + "default_enabled": true, + "mode": "effort", + "effort": "medium", + "effort_options": [ + "low", + "medium", + "high" + ], + "visibility": "hidden" } }, "cost": { - "input": 0.6, - "output": 0.6 + "input": 3, + "output": 12, + "cache_read": 1.5 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", + "id": "omni-moderation-latest", + "name": "omni-moderation-latest", + "display_name": "omni-moderation-latest", "limit": { "context": 8192, "output": 8192 @@ -252348,33 +252620,75 @@ "supported": false }, "cost": { - "input": 0.01, - "output": 0.01 + "input": 0.02, + "output": 0.02 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", + "id": "qwen-flash", + "name": "qwen-flash", + "display_name": "qwen-flash", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.01, - "output": 0.01 + "input": 0.02, + "output": 0.2, + "cache_read": 0.02 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", + "id": "qwen-flash-2025-07-28", + "name": "qwen-flash-2025-07-28", + "display_name": "qwen-flash-2025-07-28", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } + }, + "cost": { + "input": 0.02, + "output": 0.2, + "cache_read": 0.02 + }, + "type": "chat" + }, + { + "id": "qwen-long", + "name": "qwen-long", + "display_name": "qwen-long", "limit": { "context": 8192, "output": 8192 @@ -252385,14 +252699,14 @@ }, "cost": { "input": 0.1, - "output": 0.1 + "output": 0.4 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", + "id": "qwen-max", + "name": "qwen-max", + "display_name": "qwen-max", "limit": { "context": 8192, "output": 8192 @@ -252402,15 +252716,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.38, + "output": 1.52 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", - "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", - "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", + "id": "qwen-max-longcontext", + "name": "qwen-max-longcontext", + "display_name": "qwen-max-longcontext", "limit": { "context": 8192, "output": 8192 @@ -252420,51 +252734,85 @@ "supported": false }, "cost": { - "input": 0.01, - "output": 0.01 + "input": 7, + "output": 21 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-V2-Chat", - "name": "deepseek-ai/DeepSeek-V2-Chat", - "display_name": "deepseek-ai/DeepSeek-V2-Chat", + "id": "qwen-plus", + "name": "qwen-plus", + "display_name": "qwen-plus", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.16, - "output": 0.32 + "input": 0.1126, + "output": 1.126, + "cache_read": 0.02252 }, "type": "chat" }, { - "id": "deepseek-ai/DeepSeek-V2.5", - "name": "deepseek-ai/DeepSeek-V2.5", - "display_name": "deepseek-ai/DeepSeek-V2.5", + "id": "qwen-turbo", + "name": "qwen-turbo", + "display_name": "qwen-turbo", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.16, - "output": 0.32 + "input": 0.046, + "output": 0.092, + "cache_read": 0.0092 }, "type": "chat" }, { - "id": "deepseek-ai/deepseek-llm-67b-chat", - "name": "deepseek-ai/deepseek-llm-67b-chat", - "display_name": "deepseek-ai/deepseek-llm-67b-chat", + "id": "qwen-turbo-2024-11-01", + "name": "qwen-turbo-2024-11-01", + "display_name": "qwen-turbo-2024-11-01", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252474,15 +252822,15 @@ "supported": false }, "cost": { - "input": 0.16, - "output": 0.16 + "input": 0.046, + "output": 0.092 }, "type": "chat" }, { - "id": "deepseek-ai/deepseek-vl2", - "name": "deepseek-ai/deepseek-vl2", - "display_name": "deepseek-ai/deepseek-vl2", + "id": "qwen2.5-14b-instruct", + "name": "qwen2.5-14b-instruct", + "display_name": "qwen2.5-14b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252492,15 +252840,15 @@ "supported": false }, "cost": { - "input": 0.16, - "output": 0.16 + "input": 0.4, + "output": 1.2 }, "type": "chat" }, { - "id": "deepseek-v3", - "name": "deepseek-v3", - "display_name": "deepseek-v3", + "id": "qwen2.5-32b-instruct", + "name": "qwen2.5-32b-instruct", + "display_name": "qwen2.5-32b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252510,21 +252858,15 @@ "supported": false }, "cost": { - "input": 0.272, - "output": 1.088, - "cache_read": 0 + "input": 0.6, + "output": 1.2 }, "type": "chat" }, { - "id": "distil-whisper-large-v3-en", - "name": "distil-whisper-large-v3-en", - "display_name": "distil-whisper-large-v3-en", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "qwen2.5-3b-instruct", + "name": "qwen2.5-3b-instruct", + "display_name": "qwen2.5-3b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252534,15 +252876,15 @@ "supported": false }, "cost": { - "input": 5.556, - "output": 5.556 + "input": 0.4, + "output": 0.8 }, "type": "chat" }, { - "id": "doubao-1-5-thinking-vision-pro-250428", - "name": "doubao-1-5-thinking-vision-pro-250428", - "display_name": "doubao-1-5-thinking-vision-pro-250428", + "id": "qwen2.5-72b-instruct", + "name": "qwen2.5-72b-instruct", + "display_name": "qwen2.5-72b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252552,16 +252894,15 @@ "supported": false }, "cost": { - "input": 2, - "output": 2, - "cache_read": 2 + "input": 0.8, + "output": 2.4 }, "type": "chat" }, { - "id": "fx-flux-2-pro", - "name": "fx-flux-2-pro", - "display_name": "fx-flux-2-pro", + "id": "qwen2.5-7b-instruct", + "name": "qwen2.5-7b-instruct", + "display_name": "qwen2.5-7b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252571,68 +252912,33 @@ "supported": false }, "cost": { - "input": 2, - "output": 0, - "cache_read": 0 + "input": 0.4, + "output": 0.8 }, "type": "chat" }, { - "id": "gemini-2.5-pro-exp-03-25", - "name": "gemini-2.5-pro-exp-03-25", - "display_name": "gemini-2.5-pro-exp-03-25", - "modalities": { - "input": [ - "text", - "image", - "audio", - "video" - ] - }, + "id": "qwen2.5-coder-1.5b-instruct", + "name": "qwen2.5-coder-1.5b-instruct", + "display_name": "qwen2.5-coder-1.5b-instruct", "limit": { "context": 8192, "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "budget", - "budget": { - "default": -1, - "min": 128, - "max": 32768, - "auto": -1, - "unit": "tokens" - }, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thought_signatures" - ] - } + "supported": false }, "cost": { - "input": 1.25, - "output": 5, - "cache_read": 0.125 + "input": 0.2, + "output": 0.4 }, "type": "chat" }, { - "id": "gemini-embedding-exp-03-07", - "name": "gemini-embedding-exp-03-07", - "display_name": "gemini-embedding-exp-03-07", - "modalities": { - "input": [ - "text" - ] - }, + "id": "qwen2.5-coder-7b-instruct", + "name": "qwen2.5-coder-7b-instruct", + "display_name": "qwen2.5-coder-7b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252642,15 +252948,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.2, + "output": 0.4 }, - "type": "embedding" + "type": "chat" }, { - "id": "gemini-exp-1114", - "name": "gemini-exp-1114", - "display_name": "gemini-exp-1114", + "id": "qwen2.5-math-1.5b-instruct", + "name": "qwen2.5-math-1.5b-instruct", + "display_name": "qwen2.5-math-1.5b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252660,15 +252966,15 @@ "supported": false }, "cost": { - "input": 1.25, - "output": 5 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "gemini-exp-1121", - "name": "gemini-exp-1121", - "display_name": "gemini-exp-1121", + "id": "qwen2.5-math-72b-instruct", + "name": "qwen2.5-math-72b-instruct", + "display_name": "qwen2.5-math-72b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252678,15 +252984,15 @@ "supported": false }, "cost": { - "input": 1.25, - "output": 5 + "input": 0.8, + "output": 2.4 }, "type": "chat" }, { - "id": "gemini-pro", - "name": "gemini-pro", - "display_name": "gemini-pro", + "id": "qwen2.5-math-7b-instruct", + "name": "qwen2.5-math-7b-instruct", + "display_name": "qwen2.5-math-7b-instruct", "limit": { "context": 8192, "output": 8192 @@ -252697,14 +253003,14 @@ }, "cost": { "input": 0.2, - "output": 0.6 + "output": 0.4 }, "type": "chat" }, { - "id": "gemini-pro-vision", - "name": "gemini-pro-vision", - "display_name": "gemini-pro-vision", + "id": "step-2-16k", + "name": "step-2-16k", + "display_name": "step-2-16k", "limit": { "context": 8192, "output": 8192 @@ -252714,15 +253020,20 @@ "supported": false }, "cost": { - "input": 1, - "output": 1 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "gemma-7b-it", - "name": "gemma-7b-it", - "display_name": "gemma-7b-it", + "id": "text-embedding-v1", + "name": "text-embedding-v1", + "display_name": "text-embedding-v1", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252735,12 +253046,17 @@ "input": 0.1, "output": 0.1 }, - "type": "chat" + "type": "embedding" }, { - "id": "glm-3-turbo", - "name": "glm-3-turbo", - "display_name": "glm-3-turbo", + "id": "tts-1-hd-1106", + "name": "tts-1-hd-1106", + "display_name": "tts-1-hd-1106", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252750,15 +253066,19 @@ "supported": false }, "cost": { - "input": 0.71, - "output": 0.71 - }, - "type": "chat" + "input": 30, + "output": 30 + } }, { - "id": "glm-4", - "name": "glm-4", - "display_name": "glm-4", + "id": "text-embedding-ada-002", + "name": "text-embedding-ada-002", + "display_name": "text-embedding-ada-002", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252768,15 +253088,20 @@ "supported": false }, "cost": { - "input": 14.2, - "output": 14.2 + "input": 0.1, + "output": 0.1 }, - "type": "chat" + "type": "embedding" }, { - "id": "glm-4-flash", - "name": "glm-4-flash", - "display_name": "glm-4-flash", + "id": "tts-1-hd", + "name": "tts-1-hd", + "display_name": "tts-1-hd", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252786,15 +253111,37 @@ "supported": false }, "cost": { - "input": 0.1, - "output": 0.1 + "input": 30, + "output": 30 + } + }, + { + "id": "text-embedding-3-small", + "name": "text-embedding-3-small", + "display_name": "text-embedding-3-small", + "modalities": { + "input": [ + "text" + ] }, - "type": "chat" + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 0.02, + "output": 0.02 + }, + "type": "embedding" }, { - "id": "glm-4-plus", - "name": "glm-4-plus", - "display_name": "glm-4-plus", + "id": "text-moderation-007", + "name": "text-moderation-007", + "display_name": "text-moderation-007", "limit": { "context": 8192, "output": 8192 @@ -252804,18 +253151,18 @@ "supported": false }, "cost": { - "input": 8, - "output": 8 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "glm-4.5-airx", - "name": "glm-4.5-airx", - "display_name": "glm-4.5-airx", + "id": "tts-1-1106", + "name": "tts-1-1106", + "display_name": "tts-1-1106", "modalities": { "input": [ - "text" + "audio" ] }, "limit": { @@ -252827,16 +253174,14 @@ "supported": false }, "cost": { - "input": 1.1, - "output": 4.51, - "cache_read": 0.22 - }, - "type": "chat" + "input": 15, + "output": 15 + } }, { - "id": "glm-4v", - "name": "glm-4v", - "display_name": "glm-4v", + "id": "text-davinci-edit-001", + "name": "text-davinci-edit-001", + "display_name": "text-davinci-edit-001", "limit": { "context": 8192, "output": 8192 @@ -252846,15 +253191,15 @@ "supported": false }, "cost": { - "input": 14.2, - "output": 14.2 + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "glm-4v-plus", - "name": "glm-4v-plus", - "display_name": "glm-4v-plus", + "id": "text-davinci-003", + "name": "text-davinci-003", + "display_name": "text-davinci-003", "limit": { "context": 8192, "output": 8192 @@ -252864,15 +253209,15 @@ "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "google-gemma-3-12b-it", - "name": "google-gemma-3-12b-it", - "display_name": "google-gemma-3-12b-it", + "id": "text-davinci-002", + "name": "text-davinci-002", + "display_name": "text-davinci-002", "limit": { "context": 8192, "output": 8192 @@ -252882,15 +253227,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "google-gemma-3-27b-it", - "name": "google-gemma-3-27b-it", - "display_name": "google-gemma-3-27b-it", + "id": "text-curie-001", + "name": "text-curie-001", + "display_name": "text-curie-001", "limit": { "context": 8192, "output": 8192 @@ -252900,16 +253245,20 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2, - "cache_read": 0 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "google-gemma-3-4b-it", - "name": "google-gemma-3-4b-it", - "display_name": "google-gemma-3-4b-it", + "id": "whisper-1", + "name": "whisper-1", + "display_name": "whisper-1", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252919,16 +253268,20 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2, - "cache_read": 0 + "input": 100, + "output": 100 }, "type": "chat" }, { - "id": "google/gemini-exp-1114", - "name": "google/gemini-exp-1114", - "display_name": "google/gemini-exp-1114", + "id": "whisper-large-v3", + "name": "whisper-large-v3", + "display_name": "whisper-large-v3", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252938,15 +253291,20 @@ "supported": false }, "cost": { - "input": 1.25, - "output": 5 + "input": 30.834, + "output": 30.834 }, "type": "chat" }, { - "id": "google/gemma-2-27b-it", - "name": "google/gemma-2-27b-it", - "display_name": "google/gemma-2-27b-it", + "id": "whisper-large-v3-turbo", + "name": "whisper-large-v3-turbo", + "display_name": "whisper-large-v3-turbo", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -252956,15 +253314,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 0.8 + "input": 5.556, + "output": 5.556 }, "type": "chat" }, { - "id": "google/gemma-2-9b-it:free", - "name": "google/gemma-2-9b-it:free", - "display_name": "google/gemma-2-9b-it:free", + "id": "text-babbage-001", + "name": "text-babbage-001", + "display_name": "text-babbage-001", "limit": { "context": 8192, "output": 8192 @@ -252974,15 +253332,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.5, + "output": 0.5 }, "type": "chat" }, { - "id": "gpt-3.5-turbo", - "name": "gpt-3.5-turbo", - "display_name": "gpt-3.5-turbo", + "id": "text-ada-001", + "name": "text-ada-001", + "display_name": "text-ada-001", "limit": { "context": 8192, "output": 8192 @@ -252992,15 +253350,20 @@ "supported": false }, "cost": { - "input": 0.5, - "output": 1.5 + "input": 0.4, + "output": 0.4 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-0301", - "name": "gpt-3.5-turbo-0301", - "display_name": "gpt-3.5-turbo-0301", + "id": "tts-1", + "name": "tts-1", + "display_name": "tts-1", + "modalities": { + "input": [ + "audio" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -253010,15 +253373,32 @@ "supported": false }, "cost": { - "input": 1.5, - "output": 1.5 + "input": 15, + "output": 15 + } + }, + { + "id": "text-search-ada-doc-001", + "name": "text-search-ada-doc-001", + "display_name": "text-search-ada-doc-001", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-0613", - "name": "gpt-3.5-turbo-0613", - "display_name": "gpt-3.5-turbo-0613", + "id": "text-moderation-stable", + "name": "text-moderation-stable", + "display_name": "text-moderation-stable", "limit": { "context": 8192, "output": 8192 @@ -253028,15 +253408,15 @@ "supported": false }, "cost": { - "input": 1.5, - "output": 2 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-1106", - "name": "gpt-3.5-turbo-1106", - "display_name": "gpt-3.5-turbo-1106", + "id": "text-moderation-latest", + "name": "text-moderation-latest", + "display_name": "text-moderation-latest", "limit": { "context": 8192, "output": 8192 @@ -253046,15 +253426,15 @@ "supported": false }, "cost": { - "input": 1, - "output": 2 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-16k", - "name": "gpt-3.5-turbo-16k", - "display_name": "gpt-3.5-turbo-16k", + "id": "yi-large", + "name": "yi-large", + "display_name": "yi-large", "limit": { "context": 8192, "output": 8192 @@ -253065,14 +253445,14 @@ }, "cost": { "input": 3, - "output": 4 + "output": 3 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-16k-0613", - "name": "gpt-3.5-turbo-16k-0613", - "display_name": "gpt-3.5-turbo-16k-0613", + "id": "yi-large-rag", + "name": "yi-large-rag", + "display_name": "yi-large-rag", "limit": { "context": 8192, "output": 8192 @@ -253082,15 +253462,15 @@ "supported": false }, "cost": { - "input": 3, + "input": 4, "output": 4 }, "type": "chat" }, { - "id": "gpt-3.5-turbo-instruct", - "name": "gpt-3.5-turbo-instruct", - "display_name": "gpt-3.5-turbo-instruct", + "id": "yi-large-turbo", + "name": "yi-large-turbo", + "display_name": "yi-large-turbo", "limit": { "context": 8192, "output": 8192 @@ -253100,15 +253480,15 @@ "supported": false }, "cost": { - "input": 1.5, - "output": 2 + "input": 1.8, + "output": 1.8 }, "type": "chat" }, { - "id": "gpt-4", - "name": "gpt-4", - "display_name": "gpt-4", + "id": "yi-lightning", + "name": "yi-lightning", + "display_name": "yi-lightning", "limit": { "context": 8192, "output": 8192 @@ -253118,15 +253498,15 @@ "supported": false }, "cost": { - "input": 30, - "output": 60 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "gpt-4-0125-preview", - "name": "gpt-4-0125-preview", - "display_name": "gpt-4-0125-preview", + "id": "yi-medium", + "name": "yi-medium", + "display_name": "yi-medium", "limit": { "context": 8192, "output": 8192 @@ -253136,15 +253516,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 0.4, + "output": 0.4 }, "type": "chat" }, { - "id": "gpt-4-0314", - "name": "gpt-4-0314", - "display_name": "gpt-4-0314", + "id": "yi-vl-plus", + "name": "yi-vl-plus", + "display_name": "yi-vl-plus", "limit": { "context": 8192, "output": 8192 @@ -253154,15 +253534,20 @@ "supported": false }, "cost": { - "input": 30, - "output": 60 + "input": 0.000852, + "output": 0.000852 }, "type": "chat" }, { - "id": "gpt-4-0613", - "name": "gpt-4-0613", - "display_name": "gpt-4-0613", + "id": "text-embedding-3-large", + "name": "text-embedding-3-large", + "display_name": "text-embedding-3-large", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -253172,15 +253557,15 @@ "supported": false }, "cost": { - "input": 30, - "output": 60 + "input": 0.13, + "output": 0.13 }, - "type": "chat" + "type": "embedding" }, { - "id": "gpt-4-1106-preview", - "name": "gpt-4-1106-preview", - "display_name": "gpt-4-1106-preview", + "id": "Baichuan3-Turbo", + "name": "Baichuan3-Turbo", + "display_name": "Baichuan3-Turbo", "limit": { "context": 8192, "output": 8192 @@ -253190,15 +253575,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 1.9, + "output": 1.9 }, "type": "chat" }, { - "id": "gpt-4-32k-0314", - "name": "gpt-4-32k-0314", - "display_name": "gpt-4-32k-0314", + "id": "Baichuan3-Turbo-128k", + "name": "Baichuan3-Turbo-128k", + "display_name": "Baichuan3-Turbo-128k", "limit": { "context": 8192, "output": 8192 @@ -253208,15 +253593,15 @@ "supported": false }, "cost": { - "input": 60, - "output": 120 + "input": 3.8, + "output": 3.8 }, "type": "chat" }, { - "id": "gpt-4-32k-0613", - "name": "gpt-4-32k-0613", - "display_name": "gpt-4-32k-0613", + "id": "Baichuan4", + "name": "Baichuan4", + "display_name": "Baichuan4", "limit": { "context": 8192, "output": 8192 @@ -253226,15 +253611,15 @@ "supported": false }, "cost": { - "input": 60, - "output": 120 + "input": 16, + "output": 16 }, "type": "chat" }, { - "id": "gpt-4-turbo", - "name": "gpt-4-turbo", - "display_name": "gpt-4-turbo", + "id": "Baichuan4-Air", + "name": "Baichuan4-Air", + "display_name": "Baichuan4-Air", "limit": { "context": 8192, "output": 8192 @@ -253244,15 +253629,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 0.16, + "output": 0.16 }, "type": "chat" }, { - "id": "gpt-4-turbo-2024-04-09", - "name": "gpt-4-turbo-2024-04-09", - "display_name": "gpt-4-turbo-2024-04-09", + "id": "Baichuan4-Turbo", + "name": "Baichuan4-Turbo", + "display_name": "Baichuan4-Turbo", "limit": { "context": 8192, "output": 8192 @@ -253262,15 +253647,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 2.4, + "output": 2.4 }, "type": "chat" }, { - "id": "gpt-4-turbo-preview", - "name": "gpt-4-turbo-preview", - "display_name": "gpt-4-turbo-preview", + "id": "DeepSeek-v3", + "name": "DeepSeek-v3", + "display_name": "DeepSeek-v3", "limit": { "context": 8192, "output": 8192 @@ -253280,15 +253665,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 0.272, + "output": 1.088 }, "type": "chat" }, { - "id": "gpt-4-vision-preview", - "name": "gpt-4-vision-preview", - "display_name": "gpt-4-vision-preview", + "id": "Doubao-1.5-lite-32k", + "name": "Doubao-1.5-lite-32k", + "display_name": "Doubao-1.5-lite-32k", "limit": { "context": 8192, "output": 8192 @@ -253298,40 +253683,35 @@ "supported": false }, "cost": { - "input": 10, - "output": 30 + "input": 0.05, + "output": 0.1, + "cache_read": 0.01 }, "type": "chat" }, { - "id": "gpt-4o-2024-05-13", - "name": "gpt-4o-2024-05-13", - "display_name": "gpt-4o-2024-05-13", + "id": "Doubao-1.5-pro-256k", + "name": "Doubao-1.5-pro-256k", + "display_name": "Doubao-1.5-pro-256k", "limit": { - "context": 128000, - "output": 128000 + "context": 8192, + "output": 8192 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 5, - "output": 15, - "cache_read": 5 + "input": 0.8, + "output": 1.44, + "cache_read": 0.8 }, "type": "chat" }, { - "id": "gpt-4o-mini-2024-07-18", - "name": "gpt-4o-mini-2024-07-18", - "display_name": "gpt-4o-mini-2024-07-18", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "Doubao-1.5-pro-32k", + "name": "Doubao-1.5-pro-32k", + "display_name": "Doubao-1.5-pro-32k", "limit": { "context": 8192, "output": 8192 @@ -253341,51 +253721,34 @@ "supported": false }, "cost": { - "input": 0.15, - "output": 0.6, - "cache_read": 0.075 + "input": 0.134, + "output": 0.335, + "cache_read": 0.0268 }, "type": "chat" }, { - "id": "gpt-oss-20b", - "name": "gpt-oss-20b", - "display_name": "gpt-oss-20b", - "modalities": { - "input": [ - "text" - ] - }, + "id": "Doubao-1.5-vision-pro-32k", + "name": "Doubao-1.5-vision-pro-32k", + "display_name": "Doubao-1.5-vision-pro-32k", "limit": { - "context": 128000, - "output": 128000 + "context": 8192, + "output": 8192 }, - "tool_call": true, + "tool_call": false, "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } + "supported": false }, "cost": { - "input": 0.11, - "output": 0.55 + "input": 0.46, + "output": 1.38 }, "type": "chat" }, { - "id": "grok-2-vision-1212", - "name": "grok-2-vision-1212", - "display_name": "grok-2-vision-1212", - "modalities": { - "input": [ - "text", - "image" - ] - }, + "id": "Doubao-lite-128k", + "name": "Doubao-lite-128k", + "display_name": "Doubao-lite-128k", "limit": { "context": 8192, "output": 8192 @@ -253395,21 +253758,35 @@ "supported": false }, "cost": { - "input": 1.8, - "output": 9 + "input": 0.14, + "output": 0.28, + "cache_read": 0.14 }, "type": "chat" }, { - "id": "grok-vision-beta", - "name": "grok-vision-beta", - "display_name": "grok-vision-beta", - "modalities": { - "input": [ - "text", - "image" - ] + "id": "Doubao-lite-32k", + "name": "Doubao-lite-32k", + "display_name": "Doubao-lite-32k", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false }, + "cost": { + "input": 0.06, + "output": 0.12, + "cache_read": 0.012 + }, + "type": "chat" + }, + { + "id": "Doubao-lite-4k", + "name": "Doubao-lite-4k", + "display_name": "Doubao-lite-4k", "limit": { "context": 8192, "output": 8192 @@ -253419,15 +253796,16 @@ "supported": false }, "cost": { - "input": 5.6, - "output": 16.8 + "input": 0.06, + "output": 0.12, + "cache_read": 0.06 }, "type": "chat" }, { - "id": "groq-llama-3.1-8b-instant", - "name": "groq-llama-3.1-8b-instant", - "display_name": "groq-llama-3.1-8b-instant", + "id": "Doubao-pro-128k", + "name": "Doubao-pro-128k", + "display_name": "Doubao-pro-128k", "limit": { "context": 8192, "output": 8192 @@ -253437,15 +253815,15 @@ "supported": false }, "cost": { - "input": 0.055, - "output": 0.088 + "input": 0.8, + "output": 1.44 }, "type": "chat" }, { - "id": "groq-llama-3.3-70b-versatile", - "name": "groq-llama-3.3-70b-versatile", - "display_name": "groq-llama-3.3-70b-versatile", + "id": "Doubao-pro-256k", + "name": "Doubao-pro-256k", + "display_name": "Doubao-pro-256k", "limit": { "context": 8192, "output": 8192 @@ -253455,15 +253833,16 @@ "supported": false }, "cost": { - "input": 0.649, - "output": 0.869011 + "input": 0.8, + "output": 1.44, + "cache_read": 0.8 }, "type": "chat" }, { - "id": "groq-llama-4-maverick-17b-128e-instruct", - "name": "groq-llama-4-maverick-17b-128e-instruct", - "display_name": "groq-llama-4-maverick-17b-128e-instruct", + "id": "Doubao-pro-32k", + "name": "Doubao-pro-32k", + "display_name": "Doubao-pro-32k", "limit": { "context": 8192, "output": 8192 @@ -253473,15 +253852,16 @@ "supported": false }, "cost": { - "input": 0.22, - "output": 0.66 + "input": 0.14, + "output": 0.35, + "cache_read": 0.028 }, "type": "chat" }, { - "id": "groq-llama-4-scout-17b-16e-instruct", - "name": "groq-llama-4-scout-17b-16e-instruct", - "display_name": "groq-llama-4-scout-17b-16e-instruct", + "id": "Doubao-pro-4k", + "name": "Doubao-pro-4k", + "display_name": "Doubao-pro-4k", "limit": { "context": 8192, "output": 8192 @@ -253491,21 +253871,38 @@ "supported": false }, "cost": { - "input": 0.122, - "output": 0.366 + "input": 0.14, + "output": 0.35 }, "type": "chat" }, { - "id": "imagen-4.0-generate-preview-05-20", - "name": "imagen-4.0-generate-preview-05-20", - "display_name": "imagen-4.0-generate-preview-05-20", - "modalities": { - "input": [ - "text", - "image" - ] + "id": "GPT-OSS-20B", + "name": "GPT-OSS-20B", + "display_name": "GPT-OSS-20B", + "limit": { + "context": 8192, + "output": 8192 }, + "tool_call": false, + "reasoning": { + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.11, + "output": 0.55 + }, + "type": "chat" + }, + { + "id": "Gryphe/MythoMax-L2-13b", + "name": "Gryphe/MythoMax-L2-13b", + "display_name": "Gryphe/MythoMax-L2-13b", "limit": { "context": 8192, "output": 8192 @@ -253515,16 +253912,15 @@ "supported": false }, "cost": { - "input": 2, - "output": 2, - "cache_read": 0 + "input": 0.4, + "output": 0.4 }, - "type": "imageGeneration" + "type": "chat" }, { - "id": "jina-embeddings-v2-base-code", - "name": "jina-embeddings-v2-base-code", - "display_name": "jina-embeddings-v2-base-code", + "id": "MiniMax-Text-01", + "name": "MiniMax-Text-01", + "display_name": "MiniMax-Text-01", "modalities": { "input": [ "text" @@ -253539,15 +253935,15 @@ "supported": false }, "cost": { - "input": 0.05, - "output": 0.05 + "input": 0.14, + "output": 1.12 }, - "type": "embedding" + "type": "chat" }, { - "id": "learnlm-1.5-pro-experimental", - "name": "learnlm-1.5-pro-experimental", - "display_name": "learnlm-1.5-pro-experimental", + "id": "Mistral-large-2407", + "name": "Mistral-large-2407", + "display_name": "Mistral-large-2407", "limit": { "context": 8192, "output": 8192 @@ -253557,15 +253953,15 @@ "supported": false }, "cost": { - "input": 1.25, - "output": 5 + "input": 3, + "output": 9 }, "type": "chat" }, { - "id": "llama-3.1-405b-instruct", - "name": "llama-3.1-405b-instruct", - "display_name": "llama-3.1-405b-instruct", + "id": "Qwen/Qwen2-1.5B-Instruct", + "name": "Qwen/Qwen2-1.5B-Instruct", + "display_name": "Qwen/Qwen2-1.5B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253575,15 +253971,15 @@ "supported": false }, "cost": { - "input": 4, - "output": 4 + "input": 0.2, + "output": 0.2 }, "type": "chat" }, { - "id": "llama-3.1-405b-reasoning", - "name": "llama-3.1-405b-reasoning", - "display_name": "llama-3.1-405b-reasoning", + "id": "Qwen/Qwen2-57B-A14B-Instruct", + "name": "Qwen/Qwen2-57B-A14B-Instruct", + "display_name": "Qwen/Qwen2-57B-A14B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253593,15 +253989,15 @@ "supported": false }, "cost": { - "input": 4, - "output": 4 + "input": 0.24, + "output": 0.24 }, "type": "chat" }, { - "id": "llama-3.1-70b-versatile", - "name": "llama-3.1-70b-versatile", - "display_name": "llama-3.1-70b-versatile", + "id": "Qwen/Qwen2-72B-Instruct", + "name": "Qwen/Qwen2-72B-Instruct", + "display_name": "Qwen/Qwen2-72B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253611,15 +254007,15 @@ "supported": false }, "cost": { - "input": 0.6, - "output": 0.6 + "input": 0.8, + "output": 0.8 }, "type": "chat" }, { - "id": "llama-3.1-8b-instant", - "name": "llama-3.1-8b-instant", - "display_name": "llama-3.1-8b-instant", + "id": "Qwen/Qwen2-7B-Instruct", + "name": "Qwen/Qwen2-7B-Instruct", + "display_name": "Qwen/Qwen2-7B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253629,15 +254025,15 @@ "supported": false }, "cost": { - "input": 0.3, - "output": 0.6 + "input": 0.08, + "output": 0.08 }, "type": "chat" }, { - "id": "llama-3.1-sonar-small-128k-online", - "name": "llama-3.1-sonar-small-128k-online", - "display_name": "llama-3.1-sonar-small-128k-online", + "id": "Qwen/Qwen2.5-32B-Instruct", + "name": "Qwen/Qwen2.5-32B-Instruct", + "display_name": "Qwen/Qwen2.5-32B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253647,15 +254043,15 @@ "supported": false }, "cost": { - "input": 0.3, - "output": 0.3 + "input": 0.6, + "output": 0.6 }, "type": "chat" }, { - "id": "llama-3.2-11b-vision-preview", - "name": "llama-3.2-11b-vision-preview", - "display_name": "llama-3.2-11b-vision-preview", + "id": "Qwen/Qwen2.5-72B-Instruct", + "name": "Qwen/Qwen2.5-72B-Instruct", + "display_name": "Qwen/Qwen2.5-72B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253665,15 +254061,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.8, + "output": 0.8 }, "type": "chat" }, { - "id": "llama-3.2-1b-preview", - "name": "llama-3.2-1b-preview", - "display_name": "llama-3.2-1b-preview", + "id": "Qwen/Qwen2.5-72B-Instruct-128K", + "name": "Qwen/Qwen2.5-72B-Instruct-128K", + "display_name": "Qwen/Qwen2.5-72B-Instruct-128K", "limit": { "context": 8192, "output": 8192 @@ -253683,15 +254079,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.8, + "output": 0.8 }, "type": "chat" }, { - "id": "llama-3.2-3b-preview", - "name": "llama-3.2-3b-preview", - "display_name": "llama-3.2-3b-preview", + "id": "Qwen/Qwen2.5-7B-Instruct", + "name": "Qwen/Qwen2.5-7B-Instruct", + "display_name": "Qwen/Qwen2.5-7B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253701,15 +254097,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.4, + "output": 0.4 }, "type": "chat" }, { - "id": "llama-3.2-90b-vision-preview", - "name": "llama-3.2-90b-vision-preview", - "display_name": "llama-3.2-90b-vision-preview", + "id": "Qwen/Qwen2.5-Coder-32B-Instruct", + "name": "Qwen/Qwen2.5-Coder-32B-Instruct", + "display_name": "Qwen/Qwen2.5-Coder-32B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253719,33 +254115,50 @@ "supported": false }, "cost": { - "input": 2.4, - "output": 2.4 + "input": 0.16, + "output": 0.16 }, "type": "chat" }, { - "id": "llama2-70b-4096", - "name": "llama2-70b-4096", - "display_name": "llama2-70b-4096", + "id": "Qwen3-235B-A22B-Thinking-2507", + "name": "Qwen3-235B-A22B-Thinking-2507", + "display_name": "Qwen3-235B-A22B-Thinking-2507", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": false + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true, + "interleaved": true, + "summaries": true, + "visibility": "summary", + "continuation": [ + "thinking_blocks" + ] + } }, "cost": { - "input": 0.5, - "output": 0.5 + "input": 0.28, + "output": 2.8 }, "type": "chat" }, { - "id": "llama2-70b-40960", - "name": "llama2-70b-40960", - "display_name": "llama2-70b-40960", + "id": "Stable-Diffusion-3-5-Large", + "name": "Stable-Diffusion-3-5-Large", + "display_name": "Stable-Diffusion-3-5-Large", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -253755,15 +254168,16 @@ "supported": false }, "cost": { - "input": 0.5, - "output": 0.5 + "input": 4, + "output": 4, + "cache_read": 0 }, - "type": "chat" + "type": "imageGeneration" }, { - "id": "llama2-7b-2048", - "name": "llama2-7b-2048", - "display_name": "llama2-7b-2048", + "id": "WizardLM/WizardCoder-Python-34B-V1.0", + "name": "WizardLM/WizardCoder-Python-34B-V1.0", + "display_name": "WizardLM/WizardCoder-Python-34B-V1.0", "limit": { "context": 8192, "output": 8192 @@ -253773,15 +254187,15 @@ "supported": false }, "cost": { - "input": 0.1, - "output": 0.1 + "input": 0.9, + "output": 0.9 }, "type": "chat" }, { - "id": "llama3-70b-8192", - "name": "llama3-70b-8192", - "display_name": "llama3-70b-8192", + "id": "ahm-Phi-3-5-MoE-instruct", + "name": "ahm-Phi-3-5-MoE-instruct", + "display_name": "ahm-Phi-3-5-MoE-instruct", "limit": { "context": 8192, "output": 8192 @@ -253791,15 +254205,15 @@ "supported": false }, "cost": { - "input": 0.7, - "output": 0.937288 + "input": 0.4, + "output": 1.6 }, "type": "chat" }, { - "id": "llama3-8b-8192", - "name": "llama3-8b-8192", - "display_name": "llama3-8b-8192", + "id": "ahm-Phi-3-5-mini-instruct", + "name": "ahm-Phi-3-5-mini-instruct", + "display_name": "ahm-Phi-3-5-mini-instruct", "limit": { "context": 8192, "output": 8192 @@ -253809,15 +254223,21 @@ "supported": false }, "cost": { - "input": 0.06, - "output": 0.12 + "input": 1, + "output": 3 }, "type": "chat" }, { - "id": "llama3-groq-70b-8192-tool-use-preview", - "name": "llama3-groq-70b-8192-tool-use-preview", - "display_name": "llama3-groq-70b-8192-tool-use-preview", + "id": "ahm-Phi-3-5-vision-instruct", + "name": "ahm-Phi-3-5-vision-instruct", + "display_name": "ahm-Phi-3-5-vision-instruct", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -253827,15 +254247,15 @@ "supported": false }, "cost": { - "input": 0.00089, - "output": 0.00089 + "input": 0.4, + "output": 1.6 }, "type": "chat" }, { - "id": "llama3-groq-8b-8192-tool-use-preview", - "name": "llama3-groq-8b-8192-tool-use-preview", - "display_name": "llama3-groq-8b-8192-tool-use-preview", + "id": "ahm-Phi-3-medium-128k", + "name": "ahm-Phi-3-medium-128k", + "display_name": "ahm-Phi-3-medium-128k", "limit": { "context": 8192, "output": 8192 @@ -253845,15 +254265,15 @@ "supported": false }, "cost": { - "input": 0.00019, - "output": 0.00019 + "input": 6, + "output": 18 }, "type": "chat" }, { - "id": "mai-image-2", - "name": "mai-image-2", - "display_name": "mai-image-2", + "id": "ahm-Phi-3-medium-4k", + "name": "ahm-Phi-3-medium-4k", + "display_name": "ahm-Phi-3-medium-4k", "limit": { "context": 8192, "output": 8192 @@ -253863,16 +254283,33 @@ "supported": false }, "cost": { - "input": 2, - "output": 2, - "cache_read": 0 + "input": 1, + "output": 3 }, - "type": "imageGeneration" + "type": "chat" }, { - "id": "meta-llama/Llama-3.2-90B-Vision-Instruct", - "name": "meta-llama/Llama-3.2-90B-Vision-Instruct", - "display_name": "meta-llama/Llama-3.2-90B-Vision-Instruct", + "id": "ahm-Phi-3-small-128k", + "name": "ahm-Phi-3-small-128k", + "display_name": "ahm-Phi-3-small-128k", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 1, + "output": 3 + }, + "type": "chat" + }, + { + "id": "aihubmix-Codestral-2501", + "name": "aihubmix-Codestral-2501", + "display_name": "aihubmix-Codestral-2501", "limit": { "context": 8192, "output": 8192 @@ -253882,15 +254319,20 @@ "supported": false }, "cost": { - "input": 0.5, - "output": 0.5 + "input": 0.4, + "output": 1.2 }, "type": "chat" }, { - "id": "meta-llama/llama-3.1-405b-instruct:free", - "name": "meta-llama/llama-3.1-405b-instruct:free", - "display_name": "meta-llama/llama-3.1-405b-instruct:free", + "id": "aihubmix-Cohere-command-r", + "name": "aihubmix-Cohere-command-r", + "display_name": "aihubmix-Cohere-command-r", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -253900,15 +254342,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.64, + "output": 1.92 }, "type": "chat" }, { - "id": "meta-llama/llama-3.1-70b-instruct:free", - "name": "meta-llama/llama-3.1-70b-instruct:free", - "display_name": "meta-llama/llama-3.1-70b-instruct:free", + "id": "aihubmix-Jamba-1-5-Large", + "name": "aihubmix-Jamba-1-5-Large", + "display_name": "aihubmix-Jamba-1-5-Large", "limit": { "context": 8192, "output": 8192 @@ -253918,15 +254360,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 2.2, + "output": 8.8 }, "type": "chat" }, { - "id": "meta-llama/llama-3.1-8b-instruct:free", - "name": "meta-llama/llama-3.1-8b-instruct:free", - "display_name": "meta-llama/llama-3.1-8b-instruct:free", + "id": "aihubmix-Llama-3-1-405B-Instruct", + "name": "aihubmix-Llama-3-1-405B-Instruct", + "display_name": "aihubmix-Llama-3-1-405B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253936,15 +254378,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 5, + "output": 15 }, "type": "chat" }, { - "id": "meta-llama/llama-3.2-11b-vision-instruct:free", - "name": "meta-llama/llama-3.2-11b-vision-instruct:free", - "display_name": "meta-llama/llama-3.2-11b-vision-instruct:free", + "id": "aihubmix-Llama-3-1-70B-Instruct", + "name": "aihubmix-Llama-3-1-70B-Instruct", + "display_name": "aihubmix-Llama-3-1-70B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253954,15 +254396,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.6, + "output": 0.78 }, "type": "chat" }, { - "id": "meta-llama/llama-3.2-3b-instruct:free", - "name": "meta-llama/llama-3.2-3b-instruct:free", - "display_name": "meta-llama/llama-3.2-3b-instruct:free", + "id": "aihubmix-Llama-3-1-8B-Instruct", + "name": "aihubmix-Llama-3-1-8B-Instruct", + "display_name": "aihubmix-Llama-3-1-8B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -253972,15 +254414,15 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.3, + "output": 0.6 }, "type": "chat" }, { - "id": "meta/llama-3.1-405b-instruct", - "name": "meta/llama-3.1-405b-instruct", - "display_name": "meta/llama-3.1-405b-instruct", + "id": "aihubmix-Llama-3-2-11B-Vision", + "name": "aihubmix-Llama-3-2-11B-Vision", + "display_name": "aihubmix-Llama-3-2-11B-Vision", "limit": { "context": 8192, "output": 8192 @@ -253990,15 +254432,15 @@ "supported": false }, "cost": { - "input": 5, - "output": 5 + "input": 0.4, + "output": 0.4 }, "type": "chat" }, { - "id": "meta/llama3-8B-chat", - "name": "meta/llama3-8B-chat", - "display_name": "meta/llama3-8B-chat", + "id": "aihubmix-Llama-3-2-90B-Vision", + "name": "aihubmix-Llama-3-2-90B-Vision", + "display_name": "aihubmix-Llama-3-2-90B-Vision", "limit": { "context": 8192, "output": 8192 @@ -254008,15 +254450,15 @@ "supported": false }, "cost": { - "input": 0.3, - "output": 0.3 + "input": 2.4, + "output": 2.4 }, "type": "chat" }, { - "id": "mistralai/mistral-7b-instruct:free", - "name": "mistralai/mistral-7b-instruct:free", - "display_name": "mistralai/mistral-7b-instruct:free", + "id": "aihubmix-Llama-3-70B-Instruct", + "name": "aihubmix-Llama-3-70B-Instruct", + "display_name": "aihubmix-Llama-3-70B-Instruct", "limit": { "context": 8192, "output": 8192 @@ -254026,15 +254468,15 @@ "supported": false }, "cost": { - "input": 0.002, - "output": 0.002 + "input": 0.7, + "output": 0.7 }, "type": "chat" }, { - "id": "mm-minimax-m3", - "name": "mm-minimax-m3", - "display_name": "mm-minimax-m3", + "id": "aihubmix-Mistral-large", + "name": "aihubmix-Mistral-large", + "display_name": "aihubmix-Mistral-large", "limit": { "context": 8192, "output": 8192 @@ -254044,15 +254486,20 @@ "supported": false }, "cost": { - "input": 0.288, - "output": 1.152 + "input": 4, + "output": 12 }, "type": "chat" }, { - "id": "moonshot-kimi-k2.5", - "name": "moonshot-kimi-k2.5", - "display_name": "moonshot-kimi-k2.5", + "id": "aihubmix-command-r-08-2024", + "name": "aihubmix-command-r-08-2024", + "display_name": "aihubmix-command-r-08-2024", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254062,16 +254509,20 @@ "supported": false }, "cost": { - "input": 0.6, - "output": 3, - "cache_read": 0.105 + "input": 0.2, + "output": 0.8 }, "type": "chat" }, { - "id": "moonshot-v1-128k", - "name": "moonshot-v1-128k", - "display_name": "moonshot-v1-128k", + "id": "aihubmix-command-r-plus", + "name": "aihubmix-command-r-plus", + "display_name": "aihubmix-command-r-plus", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254081,15 +254532,20 @@ "supported": false }, "cost": { - "input": 10, - "output": 10 + "input": 3.84, + "output": 19.2 }, "type": "chat" }, { - "id": "moonshot-v1-128k-vision-preview", - "name": "moonshot-v1-128k-vision-preview", - "display_name": "moonshot-v1-128k-vision-preview", + "id": "aihubmix-command-r-plus-08-2024", + "name": "aihubmix-command-r-plus-08-2024", + "display_name": "aihubmix-command-r-plus-08-2024", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254099,15 +254555,15 @@ "supported": false }, "cost": { - "input": 10, - "output": 10 + "input": 2.8, + "output": 11.2 }, "type": "chat" }, { - "id": "moonshot-v1-32k", - "name": "moonshot-v1-32k", - "display_name": "moonshot-v1-32k", + "id": "alicloud-deepseek-v3.2", + "name": "alicloud-deepseek-v3.2", + "display_name": "alicloud-deepseek-v3.2", "limit": { "context": 8192, "output": 8192 @@ -254117,15 +254573,16 @@ "supported": false }, "cost": { - "input": 4, - "output": 4 + "input": 0.274, + "output": 0.411, + "cache_read": 0.0548 }, "type": "chat" }, { - "id": "moonshot-v1-32k-vision-preview", - "name": "moonshot-v1-32k-vision-preview", - "display_name": "moonshot-v1-32k-vision-preview", + "id": "alicloud-glm-4.7", + "name": "alicloud-glm-4.7", + "display_name": "alicloud-glm-4.7", "limit": { "context": 8192, "output": 8192 @@ -254135,15 +254592,16 @@ "supported": false }, "cost": { - "input": 4, - "output": 4 + "input": 0.41096, + "output": 1.917786, + "cache_read": 0.41096 }, "type": "chat" }, { - "id": "moonshot-v1-8k", - "name": "moonshot-v1-8k", - "display_name": "moonshot-v1-8k", + "id": "alicloud-kimi-k2-thinking", + "name": "alicloud-kimi-k2-thinking", + "display_name": "alicloud-kimi-k2-thinking", "limit": { "context": 8192, "output": 8192 @@ -254153,33 +254611,34 @@ "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 0.548, + "output": 2.192 }, "type": "chat" }, { - "id": "moonshot-v1-8k-vision-preview", - "name": "moonshot-v1-8k-vision-preview", - "display_name": "moonshot-v1-8k-vision-preview", + "id": "alicloud-kimi-k2.5", + "name": "alicloud-kimi-k2.5", + "display_name": "alicloud-kimi-k2.5", "limit": { - "context": 8192, - "output": 8192 + "context": 256000, + "output": 256000 }, "tool_call": false, "reasoning": { "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 0.548, + "output": 2.877, + "cache_read": 0.0959 }, "type": "chat" }, { - "id": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", - "name": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", - "display_name": "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", + "id": "alicloud-minimax-m2.5", + "name": "alicloud-minimax-m2.5", + "display_name": "alicloud-minimax-m2.5", "limit": { "context": 8192, "output": 8192 @@ -254189,50 +254648,47 @@ "supported": false }, "cost": { - "input": 0.5, - "output": 0.5, - "cache_read": 0 + "input": 0.2876, + "output": 1.1504, + "cache_read": 0.05752 }, "type": "chat" }, { - "id": "o1-mini-2024-09-12", - "name": "o1-mini-2024-09-12", - "display_name": "o1-mini-2024-09-12", + "id": "anthropic-opus-4-6", + "name": "anthropic-opus-4-6", + "display_name": "anthropic-opus-4-6", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { - "context": 8192, - "output": 8192 + "context": 200000, + "output": 200000 }, - "tool_call": false, + "tool_call": true, "reasoning": { "supported": true, "default": true }, "extra_capabilities": { "reasoning": { - "supported": true, - "default_enabled": true, - "mode": "effort", - "effort": "medium", - "effort_options": [ - "low", - "medium", - "high" - ], - "visibility": "hidden" + "supported": true } }, "cost": { - "input": 3, - "output": 12, - "cache_read": 1.5 + "input": 5, + "output": 25, + "cache_read": 0.5 }, "type": "chat" }, { - "id": "omni-moderation-latest", - "name": "omni-moderation-latest", - "display_name": "omni-moderation-latest", + "id": "azure-deepseek-v3.2", + "name": "azure-deepseek-v3.2", + "display_name": "azure-deepseek-v3.2", "limit": { "context": 8192, "output": 8192 @@ -254242,75 +254698,51 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 0.58, + "output": 1.680028 }, "type": "chat" }, { - "id": "qwen-flash", - "name": "qwen-flash", - "display_name": "qwen-flash", + "id": "azure-deepseek-v3.2-speciale", + "name": "azure-deepseek-v3.2-speciale", + "display_name": "azure-deepseek-v3.2-speciale", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.02, - "output": 0.2, - "cache_read": 0.02 + "input": 0.58, + "output": 1.680028 }, "type": "chat" }, { - "id": "qwen-flash-2025-07-28", - "name": "qwen-flash-2025-07-28", - "display_name": "qwen-flash-2025-07-28", + "id": "azure-kimi-k2.5", + "name": "azure-kimi-k2.5", + "display_name": "azure-kimi-k2.5", "limit": { - "context": 8192, - "output": 8192 + "context": 256000, + "output": 256000 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.02, - "output": 0.2, - "cache_read": 0.02 + "input": 0.6, + "output": 3 }, "type": "chat" }, { - "id": "qwen-long", - "name": "qwen-long", - "display_name": "qwen-long", + "id": "cbs-glm-4.7", + "name": "cbs-glm-4.7", + "display_name": "cbs-glm-4.7", "limit": { "context": 8192, "output": 8192 @@ -254320,15 +254752,15 @@ "supported": false }, "cost": { - "input": 0.1, - "output": 0.4 + "input": 2.25, + "output": 2.749995 }, "type": "chat" }, { - "id": "qwen-max", - "name": "qwen-max", - "display_name": "qwen-max", + "id": "cerebras-llama-3.3-70b", + "name": "cerebras-llama-3.3-70b", + "display_name": "cerebras-llama-3.3-70b", "limit": { "context": 8192, "output": 8192 @@ -254338,15 +254770,15 @@ "supported": false }, "cost": { - "input": 0.38, - "output": 1.52 + "input": 0.6, + "output": 0.6 }, "type": "chat" }, { - "id": "qwen-max-longcontext", - "name": "qwen-max-longcontext", - "display_name": "qwen-max-longcontext", + "id": "chatglm_lite", + "name": "chatglm_lite", + "display_name": "chatglm_lite", "limit": { "context": 8192, "output": 8192 @@ -254356,85 +254788,51 @@ "supported": false }, "cost": { - "input": 7, - "output": 21 + "input": 0.2858, + "output": 0.2858 }, "type": "chat" }, { - "id": "qwen-plus", - "name": "qwen-plus", - "display_name": "qwen-plus", + "id": "chatglm_pro", + "name": "chatglm_pro", + "display_name": "chatglm_pro", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.1126, - "output": 1.126, - "cache_read": 0.02252 + "input": 1.4286, + "output": 1.4286 }, "type": "chat" }, { - "id": "qwen-turbo", - "name": "qwen-turbo", - "display_name": "qwen-turbo", - "modalities": { - "input": [ - "text" - ] - }, + "id": "chatglm_std", + "name": "chatglm_std", + "display_name": "chatglm_std", "limit": { "context": 8192, "output": 8192 }, "tool_call": false, "reasoning": { - "supported": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true, - "interleaved": true, - "summaries": true, - "visibility": "summary", - "continuation": [ - "thinking_blocks" - ] - } + "supported": false }, "cost": { - "input": 0.046, - "output": 0.092, - "cache_read": 0.0092 + "input": 0.7144, + "output": 0.7144 }, "type": "chat" }, { - "id": "qwen-turbo-2024-11-01", - "name": "qwen-turbo-2024-11-01", - "display_name": "qwen-turbo-2024-11-01", - "modalities": { - "input": [ - "text" - ] - }, + "id": "chatglm_turbo", + "name": "chatglm_turbo", + "display_name": "chatglm_turbo", "limit": { "context": 8192, "output": 8192 @@ -254444,15 +254842,15 @@ "supported": false }, "cost": { - "input": 0.046, - "output": 0.092 + "input": 0.7144, + "output": 0.7144 }, "type": "chat" }, { - "id": "qwen2.5-14b-instruct", - "name": "qwen2.5-14b-instruct", - "display_name": "qwen2.5-14b-instruct", + "id": "claude-2", + "name": "claude-2", + "display_name": "claude-2", "limit": { "context": 8192, "output": 8192 @@ -254462,15 +254860,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 1.2 + "input": 8.8, + "output": 8.8 }, "type": "chat" }, { - "id": "qwen2.5-32b-instruct", - "name": "qwen2.5-32b-instruct", - "display_name": "qwen2.5-32b-instruct", + "id": "claude-2.0", + "name": "claude-2.0", + "display_name": "claude-2.0", "limit": { "context": 8192, "output": 8192 @@ -254480,15 +254878,15 @@ "supported": false }, "cost": { - "input": 0.6, - "output": 1.2 + "input": 8.8, + "output": 39.6 }, "type": "chat" }, { - "id": "qwen2.5-3b-instruct", - "name": "qwen2.5-3b-instruct", - "display_name": "qwen2.5-3b-instruct", + "id": "claude-2.1", + "name": "claude-2.1", + "display_name": "claude-2.1", "limit": { "context": 8192, "output": 8192 @@ -254498,15 +254896,21 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.8 + "input": 8.8, + "output": 39.6 }, "type": "chat" }, { - "id": "qwen2.5-72b-instruct", - "name": "qwen2.5-72b-instruct", - "display_name": "qwen2.5-72b-instruct", + "id": "claude-3-haiku-20240229", + "name": "claude-3-haiku-20240229", + "display_name": "claude-3-haiku-20240229", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254516,15 +254920,21 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 2.4 + "input": 0.275, + "output": 0.275 }, "type": "chat" }, { - "id": "qwen2.5-7b-instruct", - "name": "qwen2.5-7b-instruct", - "display_name": "qwen2.5-7b-instruct", + "id": "claude-3-haiku-20240307", + "name": "claude-3-haiku-20240307", + "display_name": "claude-3-haiku-20240307", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254534,15 +254944,21 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.8 + "input": 0.275, + "output": 1.375 }, "type": "chat" }, { - "id": "qwen2.5-coder-1.5b-instruct", - "name": "qwen2.5-coder-1.5b-instruct", - "display_name": "qwen2.5-coder-1.5b-instruct", + "id": "claude-3-sonnet-20240229", + "name": "claude-3-sonnet-20240229", + "display_name": "claude-3-sonnet-20240229", + "modalities": { + "input": [ + "text", + "image" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254552,15 +254968,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.4 + "input": 3.3, + "output": 16.5 }, "type": "chat" }, { - "id": "qwen2.5-coder-7b-instruct", - "name": "qwen2.5-coder-7b-instruct", - "display_name": "qwen2.5-coder-7b-instruct", + "id": "claude-instant-1", + "name": "claude-instant-1", + "display_name": "claude-instant-1", "limit": { "context": 8192, "output": 8192 @@ -254570,15 +254986,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.4 + "input": 1.793, + "output": 1.793 }, "type": "chat" }, { - "id": "qwen2.5-math-1.5b-instruct", - "name": "qwen2.5-math-1.5b-instruct", - "display_name": "qwen2.5-math-1.5b-instruct", + "id": "claude-instant-1.2", + "name": "claude-instant-1.2", + "display_name": "claude-instant-1.2", "limit": { "context": 8192, "output": 8192 @@ -254588,15 +255004,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.88, + "output": 3.96 }, "type": "chat" }, { - "id": "qwen2.5-math-72b-instruct", - "name": "qwen2.5-math-72b-instruct", - "display_name": "qwen2.5-math-72b-instruct", + "id": "code-davinci-edit-001", + "name": "code-davinci-edit-001", + "display_name": "code-davinci-edit-001", "limit": { "context": 8192, "output": 8192 @@ -254606,15 +255022,15 @@ "supported": false }, "cost": { - "input": 0.8, - "output": 2.4 + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "qwen2.5-math-7b-instruct", - "name": "qwen2.5-math-7b-instruct", - "display_name": "qwen2.5-math-7b-instruct", + "id": "cogview-3", + "name": "cogview-3", + "display_name": "cogview-3", "limit": { "context": 8192, "output": 8192 @@ -254624,15 +255040,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.4 + "input": 35.5, + "output": 35.5 }, "type": "chat" }, { - "id": "step-2-16k", - "name": "step-2-16k", - "display_name": "step-2-16k", + "id": "cogview-3-plus", + "name": "cogview-3-plus", + "display_name": "cogview-3-plus", "limit": { "context": 8192, "output": 8192 @@ -254642,18 +255058,18 @@ "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 10, + "output": 10 }, "type": "chat" }, { - "id": "tts-1-hd-1106", - "name": "tts-1-hd-1106", - "display_name": "tts-1-hd-1106", + "id": "command", + "name": "command", + "display_name": "command", "modalities": { "input": [ - "audio" + "text" ] }, "limit": { @@ -254665,19 +255081,15 @@ "supported": false }, "cost": { - "input": 30, - "output": 30 - } + "input": 1, + "output": 2 + }, + "type": "chat" }, { - "id": "tts-1-hd", - "name": "tts-1-hd", - "display_name": "tts-1-hd", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "command-light", + "name": "command-light", + "display_name": "command-light", "limit": { "context": 8192, "output": 8192 @@ -254687,19 +255099,15 @@ "supported": false }, "cost": { - "input": 30, - "output": 30 - } + "input": 1, + "output": 2 + }, + "type": "chat" }, { - "id": "tts-1-1106", - "name": "tts-1-1106", - "display_name": "tts-1-1106", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "command-light-nightly", + "name": "command-light-nightly", + "display_name": "command-light-nightly", "limit": { "context": 8192, "output": 8192 @@ -254709,19 +255117,15 @@ "supported": false }, "cost": { - "input": 15, - "output": 15 - } + "input": 1, + "output": 2 + }, + "type": "chat" }, { - "id": "tts-1", - "name": "tts-1", - "display_name": "tts-1", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "command-nightly", + "name": "command-nightly", + "display_name": "command-nightly", "limit": { "context": 8192, "output": 8192 @@ -254731,14 +255135,20 @@ "supported": false }, "cost": { - "input": 15, - "output": 15 - } + "input": 1, + "output": 2 + }, + "type": "chat" }, { - "id": "text-search-ada-doc-001", - "name": "text-search-ada-doc-001", - "display_name": "text-search-ada-doc-001", + "id": "command-r", + "name": "command-r", + "display_name": "command-r", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254748,15 +255158,20 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 0.64, + "output": 1.92 }, "type": "chat" }, { - "id": "text-moderation-007", - "name": "text-moderation-007", - "display_name": "text-moderation-007", + "id": "command-r-08-2024", + "name": "command-r-08-2024", + "display_name": "command-r-08-2024", + "modalities": { + "input": [ + "text" + ] + }, "limit": { "context": 8192, "output": 8192 @@ -254767,14 +255182,14 @@ }, "cost": { "input": 0.2, - "output": 0.2 + "output": 0.8 }, "type": "chat" }, { - "id": "text-embedding-ada-002", - "name": "text-embedding-ada-002", - "display_name": "text-embedding-ada-002", + "id": "command-r-plus", + "name": "command-r-plus", + "display_name": "command-r-plus", "modalities": { "input": [ "text" @@ -254789,15 +255204,15 @@ "supported": false }, "cost": { - "input": 0.1, - "output": 0.1 + "input": 3.84, + "output": 19.2 }, - "type": "embedding" + "type": "chat" }, { - "id": "text-embedding-3-small", - "name": "text-embedding-3-small", - "display_name": "text-embedding-3-small", + "id": "command-r-plus-08-2024", + "name": "command-r-plus-08-2024", + "display_name": "command-r-plus-08-2024", "modalities": { "input": [ "text" @@ -254812,18 +255227,19 @@ "supported": false }, "cost": { - "input": 0.02, - "output": 0.02 + "input": 2.8, + "output": 11.2 }, - "type": "embedding" + "type": "chat" }, { - "id": "text-embedding-3-large", - "name": "text-embedding-3-large", - "display_name": "text-embedding-3-large", + "id": "dall-e-2", + "name": "dall-e-2", + "display_name": "dall-e-2", "modalities": { "input": [ - "text" + "text", + "image" ] }, "limit": { @@ -254835,15 +255251,15 @@ "supported": false }, "cost": { - "input": 0.13, - "output": 0.13 + "input": 16, + "output": 16 }, - "type": "embedding" + "type": "imageGeneration" }, { - "id": "text-moderation-stable", - "name": "text-moderation-stable", - "display_name": "text-moderation-stable", + "id": "davinci", + "name": "davinci", + "display_name": "davinci", "limit": { "context": 8192, "output": 8192 @@ -254853,15 +255269,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 20, + "output": 20 }, "type": "chat" }, { - "id": "text-davinci-edit-001", - "name": "text-davinci-edit-001", - "display_name": "text-davinci-edit-001", + "id": "davinci-002", + "name": "davinci-002", + "display_name": "davinci-002", "limit": { "context": 8192, "output": 8192 @@ -254871,20 +255287,15 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 2, + "output": 2 }, "type": "chat" }, { - "id": "whisper-1", - "name": "whisper-1", - "display_name": "whisper-1", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "deepinfra-llama-3.1-8b-instant", + "name": "deepinfra-llama-3.1-8b-instant", + "display_name": "deepinfra-llama-3.1-8b-instant", "limit": { "context": 8192, "output": 8192 @@ -254894,20 +255305,15 @@ "supported": false }, "cost": { - "input": 100, - "output": 100 + "input": 0.033, + "output": 0.054978 }, "type": "chat" }, { - "id": "whisper-large-v3", - "name": "whisper-large-v3", - "display_name": "whisper-large-v3", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "deepinfra-llama-3.3-70b-instant-turbo", + "name": "deepinfra-llama-3.3-70b-instant-turbo", + "display_name": "deepinfra-llama-3.3-70b-instant-turbo", "limit": { "context": 8192, "output": 8192 @@ -254917,20 +255323,15 @@ "supported": false }, "cost": { - "input": 30.834, - "output": 30.834 + "input": 0.11, + "output": 0.352 }, "type": "chat" }, { - "id": "whisper-large-v3-turbo", - "name": "whisper-large-v3-turbo", - "display_name": "whisper-large-v3-turbo", - "modalities": { - "input": [ - "audio" - ] - }, + "id": "deepinfra-llama-4-maverick-17b-128e-instruct", + "name": "deepinfra-llama-4-maverick-17b-128e-instruct", + "display_name": "deepinfra-llama-4-maverick-17b-128e-instruct", "limit": { "context": 8192, "output": 8192 @@ -254940,15 +255341,15 @@ "supported": false }, "cost": { - "input": 5.556, - "output": 5.556 + "input": 0.33, + "output": 1.32 }, "type": "chat" }, { - "id": "text-davinci-003", - "name": "text-davinci-003", - "display_name": "text-davinci-003", + "id": "deepinfra-llama-4-scout-17b-16e-instruct", + "name": "deepinfra-llama-4-scout-17b-16e-instruct", + "display_name": "deepinfra-llama-4-scout-17b-16e-instruct", "limit": { "context": 8192, "output": 8192 @@ -254958,15 +255359,16 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 0.088, + "output": 0.33, + "cache_read": 0 }, "type": "chat" }, { - "id": "text-davinci-002", - "name": "text-davinci-002", - "display_name": "text-davinci-002", + "id": "deepseek-ai/DeepSeek-Coder-V2-Instruct", + "name": "deepseek-ai/DeepSeek-Coder-V2-Instruct", + "display_name": "deepseek-ai/DeepSeek-Coder-V2-Instruct", "limit": { "context": 8192, "output": 8192 @@ -254976,15 +255378,38 @@ "supported": false }, "cost": { - "input": 20, - "output": 20 + "input": 0.16, + "output": 0.32 }, "type": "chat" }, { - "id": "text-curie-001", - "name": "text-curie-001", - "display_name": "text-curie-001", + "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "cost": { + "input": 0.6, + "output": 0.6 + }, + "type": "chat" + }, + { + "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", "limit": { "context": 8192, "output": 8192 @@ -254994,15 +255419,15 @@ "supported": false }, "cost": { - "input": 2, - "output": 2 + "input": 0.01, + "output": 0.01 }, "type": "chat" }, { - "id": "text-babbage-001", - "name": "text-babbage-001", - "display_name": "text-babbage-001", + "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", "limit": { "context": 8192, "output": 8192 @@ -255012,15 +255437,15 @@ "supported": false }, "cost": { - "input": 0.5, - "output": 0.5 + "input": 0.01, + "output": 0.01 }, "type": "chat" }, { - "id": "text-ada-001", - "name": "text-ada-001", - "display_name": "text-ada-001", + "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B", "limit": { "context": 8192, "output": 8192 @@ -255030,15 +255455,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.4 + "input": 0.1, + "output": 0.1 }, "type": "chat" }, { - "id": "text-moderation-latest", - "name": "text-moderation-latest", - "display_name": "text-moderation-latest", + "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", "limit": { "context": 8192, "output": 8192 @@ -255054,9 +255479,9 @@ "type": "chat" }, { - "id": "yi-large", - "name": "yi-large", - "display_name": "yi-large", + "id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", + "name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", + "display_name": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", "limit": { "context": 8192, "output": 8192 @@ -255066,15 +255491,15 @@ "supported": false }, "cost": { - "input": 3, - "output": 3 + "input": 0.01, + "output": 0.01 }, "type": "chat" }, { - "id": "yi-large-rag", - "name": "yi-large-rag", - "display_name": "yi-large-rag", + "id": "deepseek-ai/DeepSeek-V2-Chat", + "name": "deepseek-ai/DeepSeek-V2-Chat", + "display_name": "deepseek-ai/DeepSeek-V2-Chat", "limit": { "context": 8192, "output": 8192 @@ -255084,15 +255509,15 @@ "supported": false }, "cost": { - "input": 4, - "output": 4 + "input": 0.16, + "output": 0.32 }, "type": "chat" }, { - "id": "yi-large-turbo", - "name": "yi-large-turbo", - "display_name": "yi-large-turbo", + "id": "deepseek-ai/DeepSeek-V2.5", + "name": "deepseek-ai/DeepSeek-V2.5", + "display_name": "deepseek-ai/DeepSeek-V2.5", "limit": { "context": 8192, "output": 8192 @@ -255102,15 +255527,15 @@ "supported": false }, "cost": { - "input": 1.8, - "output": 1.8 + "input": 0.16, + "output": 0.32 }, "type": "chat" }, { - "id": "yi-lightning", - "name": "yi-lightning", - "display_name": "yi-lightning", + "id": "deepseek-r1-distill-qianfan-llama-8b", + "name": "deepseek-r1-distill-qianfan-llama-8b", + "display_name": "deepseek-r1-distill-qianfan-llama-8b", "limit": { "context": 8192, "output": 8192 @@ -255120,15 +255545,15 @@ "supported": false }, "cost": { - "input": 0.2, - "output": 0.2 + "input": 0.137, + "output": 0.548 }, "type": "chat" }, { - "id": "yi-medium", - "name": "yi-medium", - "display_name": "yi-medium", + "id": "doubao-1-5-pro-256k-250115", + "name": "doubao-1-5-pro-256k-250115", + "display_name": "doubao-1-5-pro-256k-250115", "limit": { "context": 8192, "output": 8192 @@ -255138,15 +255563,15 @@ "supported": false }, "cost": { - "input": 0.4, - "output": 0.4 + "input": 0.684, + "output": 1.2312 }, "type": "chat" }, { - "id": "yi-vl-plus", - "name": "yi-vl-plus", - "display_name": "yi-vl-plus", + "id": "doubao-1-5-pro-32k-250115", + "name": "doubao-1-5-pro-32k-250115", + "display_name": "doubao-1-5-pro-32k-250115", "limit": { "context": 8192, "output": 8192 @@ -255156,20 +255581,34 @@ "supported": false }, "cost": { - "input": 0.000852, - "output": 0.000852 + "input": 0.108, + "output": 0.27 }, "type": "chat" }, { - "id": "text-embedding-v1", - "name": "text-embedding-v1", - "display_name": "text-embedding-v1", - "modalities": { - "input": [ - "text" - ] + "id": "gpt-4o-2024-08-06-global", + "name": "gpt-4o-2024-08-06-global", + "display_name": "gpt-4o-2024-08-06-global", + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": false, + "reasoning": { + "supported": false + }, + "cost": { + "input": 2.5, + "output": 10, + "cache_read": 1.25 }, + "type": "chat" + }, + { + "id": "gpt-4o-mini-global", + "name": "gpt-4o-mini-global", + "display_name": "gpt-4o-mini-global", "limit": { "context": 8192, "output": 8192 @@ -255179,10 +255618,11 @@ "supported": false }, "cost": { - "input": 0.1, - "output": 0.1 + "input": 0.15, + "output": 0.6, + "cache_read": 0.075 }, - "type": "embedding" + "type": "chat" }, { "id": "meta-llama-3-70b", @@ -255356,98 +255796,6 @@ "output": 0.685 }, "type": "chat" - }, - { - "id": "deepseek-r1-distill-qianfan-llama-8b", - "name": "deepseek-r1-distill-qianfan-llama-8b", - "display_name": "deepseek-r1-distill-qianfan-llama-8b", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.137, - "output": 0.548 - }, - "type": "chat" - }, - { - "id": "doubao-1-5-pro-256k-250115", - "name": "doubao-1-5-pro-256k-250115", - "display_name": "doubao-1-5-pro-256k-250115", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.684, - "output": 1.2312 - }, - "type": "chat" - }, - { - "id": "doubao-1-5-pro-32k-250115", - "name": "doubao-1-5-pro-32k-250115", - "display_name": "doubao-1-5-pro-32k-250115", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.108, - "output": 0.27 - }, - "type": "chat" - }, - { - "id": "gpt-4o-2024-08-06-global", - "name": "gpt-4o-2024-08-06-global", - "display_name": "gpt-4o-2024-08-06-global", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 2.5, - "output": 10, - "cache_read": 1.25 - }, - "type": "chat" - }, - { - "id": "gpt-4o-mini-global", - "name": "gpt-4o-mini-global", - "display_name": "gpt-4o-mini-global", - "limit": { - "context": 8192, - "output": 8192 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "cost": { - "input": 0.15, - "output": 0.6, - "cache_read": 0.075 - }, - "type": "chat" } ] }, @@ -256575,59 +256923,37 @@ "type": "imageGeneration" }, { - "id": "bytedance-seed/seed-2.0-mini", - "name": "ByteDance Seed: Seed-2.0-Mini", - "display_name": "ByteDance Seed: Seed-2.0-Mini", - "modalities": { - "input": [ - "text", - "image", - "video" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 131072 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "type": "imageGeneration" - }, - { - "id": "bytedance/ui-tars-1.5-7b", - "name": "ByteDance: UI-TARS 7B", - "display_name": "ByteDance: UI-TARS 7B", + "id": "bytedance-seed/seed-2.0-mini", + "name": "ByteDance Seed: Seed-2.0-Mini", + "display_name": "ByteDance Seed: Seed-2.0-Mini", "modalities": { "input": [ + "text", "image", - "text" + "video" ], "output": [ "text" ] }, "limit": { - "context": 128000, - "output": 2048 + "context": 262144, + "output": 131072 }, - "tool_call": false, + "tool_call": true, "reasoning": { - "supported": false + "supported": true, + "default": true }, "type": "imageGeneration" }, { - "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition", - "name": "Venice: Uncensored", - "display_name": "Venice: Uncensored", + "id": "bytedance/ui-tars-1.5-7b", + "name": "ByteDance: UI-TARS 7B", + "display_name": "ByteDance: UI-TARS 7B", "modalities": { "input": [ + "image", "text" ], "output": [ @@ -256636,18 +256962,18 @@ }, "limit": { "context": 128000, - "output": 8192 + "output": 2048 }, "tool_call": false, "reasoning": { "supported": false }, - "type": "chat" + "type": "imageGeneration" }, { - "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free", - "name": "Venice: Uncensored (free)", - "display_name": "Venice: Uncensored (free)", + "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition", + "name": "Venice: Uncensored", + "display_name": "Venice: Uncensored", "modalities": { "input": [ "text" @@ -256657,8 +256983,8 @@ ] }, "limit": { - "context": 32768, - "output": 32768 + "context": 128000, + "output": 8192 }, "tool_call": false, "reasoning": { @@ -257908,8 +258234,8 @@ ] }, "limit": { - "context": 256000, - "output": 256000 + "context": 262144, + "output": 16384 }, "temperature": true, "tool_call": true, @@ -258378,29 +258704,6 @@ }, "type": "chat" }, - { - "id": "meta-llama/llama-3.2-11b-vision-instruct", - "name": "Meta: Llama 3.2 11B Vision Instruct", - "display_name": "Meta: Llama 3.2 11B Vision Instruct", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 16384 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "type": "imageGeneration" - }, { "id": "meta-llama/llama-3.2-1b-instruct", "name": "Meta: Llama 3.2 1B Instruct", @@ -258445,28 +258748,6 @@ }, "type": "chat" }, - { - "id": "meta-llama/llama-3.2-3b-instruct:free", - "name": "Meta: Llama 3.2 3B Instruct (free)", - "display_name": "Meta: Llama 3.2 3B Instruct (free)", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 131072 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "type": "chat" - }, { "id": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", @@ -258489,28 +258770,6 @@ }, "type": "chat" }, - { - "id": "meta-llama/llama-3.3-70b-instruct:free", - "name": "Meta: Llama 3.3 70B Instruct (free)", - "display_name": "Meta: Llama 3.3 70B Instruct (free)", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 65536, - "output": 65536 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "type": "chat" - }, { "id": "meta-llama/llama-4-maverick", "name": "Meta: Llama 4 Maverick", @@ -258604,6 +258863,11 @@ "supported": true, "default": true }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, "attachment": true, "type": "imageGeneration" }, @@ -259389,7 +259653,7 @@ }, "limit": { "context": 262144, - "output": 262144 + "output": 100352 }, "tool_call": true, "reasoning": { @@ -259647,28 +259911,6 @@ }, "type": "chat" }, - { - "id": "nousresearch/hermes-3-llama-3.1-405b:free", - "name": "Nous: Hermes 3 405B Instruct (free)", - "display_name": "Nous: Hermes 3 405B Instruct (free)", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 131072 - }, - "tool_call": false, - "reasoning": { - "supported": false - }, - "type": "chat" - }, { "id": "nousresearch/hermes-3-llama-3.1-70b", "name": "Nous: Hermes 3 70B Instruct", @@ -259737,30 +259979,6 @@ }, "type": "chat" }, - { - "id": "nvidia/llama-3.3-nemotron-super-49b-v1.5", - "name": "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5", - "display_name": "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 131072, - "output": 16384 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "type": "chat" - }, { "id": "nvidia/nemotron-3-nano-30b-a3b", "name": "NVIDIA: Nemotron 3 Nano 30B A3B", @@ -259847,8 +260065,8 @@ ] }, "limit": { - "context": 1000000, - "output": 1000000 + "context": 262144, + "output": 16384 }, "temperature": true, "tool_call": true, @@ -262333,6 +262551,34 @@ "attachment": true, "type": "imageGeneration" }, + { + "id": "openrouter/auto-beta", + "name": "Auto Router (Beta)", + "display_name": "Auto Router (Beta)", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video" + ], + "output": [ + "text", + "image" + ] + }, + "limit": { + "context": 8192, + "output": 8192 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "attachment": true, + "type": "imageGeneration" + }, { "id": "openrouter/bodybuilder", "name": "Body Builder (beta)", @@ -262851,7 +263097,7 @@ }, "limit": { "context": 40960, - "output": 40960 + "output": 16384 }, "tool_call": true, "reasoning": { @@ -262941,7 +263187,7 @@ }, "limit": { "context": 131072, - "output": 131072 + "output": 32768 }, "tool_call": true, "reasoning": { @@ -262974,8 +263220,8 @@ ] }, "limit": { - "context": 40960, - "output": 16384 + "context": 131072, + "output": 8192 }, "tool_call": true, "reasoning": { @@ -263231,28 +263477,6 @@ }, "type": "chat" }, - { - "id": "qwen/qwen3-coder:free", - "name": "Qwen: Qwen3 Coder 480B A35B (free)", - "display_name": "Qwen: Qwen3 Coder 480B A35B (free)", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262000, - "output": 262000 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "type": "chat" - }, { "id": "qwen/qwen3-max", "name": "Qwen: Qwen3 Max", @@ -263343,28 +263567,6 @@ }, "type": "chat" }, - { - "id": "qwen/qwen3-next-80b-a3b-instruct:free", - "name": "Qwen: Qwen3 Next 80B A3B Instruct (free)", - "display_name": "Qwen: Qwen3 Next 80B A3B Instruct (free)", - "modalities": { - "input": [ - "text" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 262144 - }, - "tool_call": true, - "reasoning": { - "supported": false - }, - "type": "chat" - }, { "id": "qwen/qwen3-next-80b-a3b-thinking", "name": "Qwen: Qwen3 Next 80B A3B Thinking", @@ -263656,7 +263858,7 @@ }, "limit": { "context": 262144, - "output": 65536 + "output": 81920 }, "temperature": true, "tool_call": true, @@ -264553,6 +264755,31 @@ }, "type": "chat" }, + { + "id": "thinkingmachines/inkling", + "name": "Thinking Machines: Inkling", + "display_name": "Thinking Machines: Inkling", + "modalities": { + "input": [ + "text", + "image", + "audio" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 524288, + "output": 524288 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "type": "imageGeneration" + }, { "id": "undi95/remm-slerp-l2-13b", "name": "ReMM SLERP 13B", @@ -264987,8 +265214,8 @@ ] }, "limit": { - "context": 202752, - "output": 16384 + "context": 131072, + "output": 131072 }, "temperature": true, "tool_call": true, @@ -265016,8 +265243,8 @@ ] }, "limit": { - "context": 202752, - "output": 202752 + "context": 204800, + "output": 131072 }, "temperature": true, "tool_call": true, @@ -265288,6 +265515,78 @@ }, "type": "chat" }, + { + "id": "gpt-5.6-terra-es", + "name": "gpt-5.6-terra-es", + "display_name": "gpt-5.6-terra-es", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 3720000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "type": "chat" + }, + { + "id": "gpt-5.6-luna-es", + "name": "gpt-5.6-luna-es", + "display_name": "gpt-5.6-luna-es", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 372000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "type": "chat" + }, + { + "id": "gpt-5.6-sol-es", + "name": "gpt-5.6-sol-es", + "display_name": "gpt-5.6-sol-es", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 372000, + "output": 128000 + }, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "type": "chat" + }, { "id": "gpt-5.6-terra", "name": "gpt-5.6-terra", @@ -270002,78 +270301,6 @@ }, "type": "chat" }, - { - "id": "gpt-5.6-terra-es", - "name": "gpt-5.6-terra-es", - "display_name": "gpt-5.6-terra-es", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 3720000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "type": "chat" - }, - { - "id": "gpt-5.6-luna-es", - "name": "gpt-5.6-luna-es", - "display_name": "gpt-5.6-luna-es", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 372000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "type": "chat" - }, - { - "id": "gpt-5.6-sol-es", - "name": "gpt-5.6-sol-es", - "display_name": "gpt-5.6-sol-es", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 372000, - "output": 128000 - }, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "type": "chat" - }, { "id": "grok-4.5", "name": "grok-4.5", @@ -272017,8 +272244,8 @@ ] }, "limit": { - "context": 1000000, - "output": 384000 + "context": 1048576, + "output": 1048576 }, "temperature": true, "tool_call": true, @@ -272042,6 +272269,12 @@ "knowledge": "2025-05", "release_date": "2026-04-24", "last_updated": "2026-04-24", + "cost": { + "input": 0.5, + "output": 0.8, + "cache_read": 0.2, + "cache_write": 0 + }, "type": "chat" }, { @@ -273339,9 +273572,9 @@ "release_date": "2026-06-12", "last_updated": "2026-06-12", "cost": { - "input": 0.75, - "output": 3.5, - "cache_read": 0.16, + "input": 0.85, + "output": 3.8, + "cache_read": 0.17, "cache_write": 0 }, "type": "chat" @@ -273410,7 +273643,47 @@ "context": 1000000, "output": 131072 }, - "temperature": true, + "temperature": false, + "tool_call": true, + "reasoning": { + "supported": true, + "default": true + }, + "extra_capabilities": { + "reasoning": { + "supported": true + } + }, + "attachment": true, + "open_weights": false, + "release_date": "2026-07-16", + "last_updated": "2026-07-16", + "cost": { + "input": 3, + "output": 15, + "cache_read": 0.3 + }, + "type": "chat" + }, + { + "id": "moonshotai/kimi-k3-free", + "name": "MoonshotAI: Kimi K3 (Free)", + "display_name": "MoonshotAI: Kimi K3 (Free)", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "limit": { + "context": 1000000, + "output": 131072 + }, + "temperature": false, "tool_call": true, "reasoning": { "supported": true, @@ -275763,43 +276036,6 @@ }, "type": "chat" }, - { - "id": "stepfun/step-3.7-flash-free", - "name": "StepFun: Step 3.7 Flash (Free)", - "display_name": "StepFun: Step 3.7 Flash (Free)", - "modalities": { - "input": [ - "text", - "image", - "video" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 262144, - "output": 262144 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "attachment": true, - "open_weights": true, - "knowledge": "2026-03-01", - "release_date": "2026-05-29", - "last_updated": "2026-05-29", - "cost": { - "input": 0.19, - "output": 1.14, - "cache_read": 0.03, - "cache_write": 0 - }, - "type": "chat" - }, { "id": "tencent/hy3", "name": "Tencent: Hy3", @@ -276022,46 +276258,6 @@ }, "type": "chat" }, - { - "id": "x-ai/grok-4.5-free", - "name": "xAI: Grok 4.5 (Free)", - "display_name": "xAI: Grok 4.5 (Free)", - "modalities": { - "input": [ - "text", - "image" - ], - "output": [ - "text" - ] - }, - "limit": { - "context": 500000, - "output": 500000 - }, - "temperature": true, - "tool_call": true, - "reasoning": { - "supported": true, - "default": true - }, - "extra_capabilities": { - "reasoning": { - "supported": true - } - }, - "attachment": true, - "open_weights": false, - "release_date": "2026-07-08", - "last_updated": "2026-07-08", - "cost": { - "input": 2, - "output": 6, - "cache_read": 0.5, - "cache_write": 2 - }, - "type": "chat" - }, { "id": "x-ai/grok-build-0.1", "name": "xAI: Grok Build 0.1", @@ -276108,6 +276304,7 @@ "input": [ "text", "image", + "audio", "video" ], "output": [ @@ -276118,19 +276315,22 @@ "context": 1048576, "output": 131072 }, + "temperature": true, "tool_call": true, "reasoning": { "supported": true, "default": true }, "attachment": true, - "open_weights": false, + "open_weights": true, + "knowledge": "2024-12", "release_date": "2026-04-22", "last_updated": "2026-04-22", "cost": { - "input": 0.14, - "output": 0.28, - "cache_read": 0.0028 + "input": 0.4, + "output": 2, + "cache_read": 0.08, + "cache_write": 0 }, "type": "chat" }, diff --git a/src/renderer/floating/main.ts b/src/renderer/floating/main.ts index c512743ede..3ce9ca78de 100644 --- a/src/renderer/floating/main.ts +++ b/src/renderer/floating/main.ts @@ -1,34 +1,13 @@ import '../src/assets/main.css' import { createApp, defineComponent, h, ref } from 'vue' -import { createI18n } from 'vue-i18n' + import FloatingButton from './FloatingButton.vue' -import locales, { pluralRules } from '../src/i18n' +import { createRendererI18n } from '../src/i18n/bootstrap' +import { loadLocaleMessages, resolveSupportedLocale } from '../src/i18n' const RTL_LANGUAGES = new Set(['fa-IR', 'he-IL']) -type FloatingLocale = keyof typeof locales - -const i18n = createI18n({ - locale: 'zh-CN', - fallbackLocale: 'en-US', - legacy: false, - pluralRules, - messages: locales -}) - const floatingTheme = ref<'dark' | 'light'>('dark') -const resolveLanguage = (language: string): FloatingLocale => { - return language in locales ? (language as FloatingLocale) : 'en-US' -} - -const applyLanguage = (language: string) => { - const resolvedLanguage = resolveLanguage(language) - - i18n.global.locale.value = resolvedLanguage - document.documentElement.lang = resolvedLanguage - document.documentElement.dir = RTL_LANGUAGES.has(resolvedLanguage) ? 'rtl' : 'ltr' -} - const applyTheme = (nextTheme: 'dark' | 'light') => { document.documentElement.dataset.theme = nextTheme document.documentElement.classList.remove('dark', 'light') @@ -45,34 +24,72 @@ const Root = defineComponent({ } }) -const app = createApp(Root) +async function bootstrap() { + const { i18n, languageState } = await createRendererI18n({ + getLanguageState: async () => { + const locale = resolveSupportedLocale(await window.floatingButtonAPI.getLanguage()) + return { + requestedLanguage: locale, + locale, + direction: RTL_LANGUAGES.has(locale) ? 'rtl' : 'ltr' + } + }, + onError: (message, error) => { + console.warn(message, error) + } + }) -app.use(i18n) -app.mount('#app') + const initialLocale = resolveSupportedLocale(languageState.locale) + document.documentElement.lang = initialLocale + document.documentElement.dir = RTL_LANGUAGES.has(initialLocale) ? 'rtl' : 'ltr' -void window.floatingButtonAPI - .getLanguage() - .then(applyLanguage) - .catch((error) => { - console.warn('Failed to initialize floating widget language:', error) - }) + const app = createApp(Root) + app.use(i18n) + app.mount('#app') + + let languageRevision = 0 + const applyLanguage = async (language: string) => { + const revision = ++languageRevision + const locale = resolveSupportedLocale(language) -const unsubscribeLanguageChanged = window.floatingButtonAPI.onLanguageChanged(applyLanguage) + try { + const messages = await loadLocaleMessages(locale) + if (revision !== languageRevision) return + + i18n.global.setLocaleMessage(locale, messages) + i18n.global.locale.value = locale + document.documentElement.lang = locale + document.documentElement.dir = RTL_LANGUAGES.has(locale) ? 'rtl' : 'ltr' + } catch (error) { + if (revision === languageRevision) { + console.warn(`Failed to load floating widget locale ${locale}:`, error) + } + } + } -void window.floatingButtonAPI - .getTheme() - .then(applyTheme) - .catch((error) => { - console.warn('Failed to initialize floating widget theme:', error) + const unsubscribeLanguageChanged = window.floatingButtonAPI.onLanguageChanged((language) => { + void applyLanguage(language) }) -const unsubscribeThemeChanged = window.floatingButtonAPI.onThemeChanged(applyTheme) + void window.floatingButtonAPI + .getTheme() + .then(applyTheme) + .catch((error) => { + console.warn('Failed to initialize floating widget theme:', error) + }) -window.addEventListener( - 'beforeunload', - () => { - unsubscribeLanguageChanged() - unsubscribeThemeChanged() - }, - { once: true } -) + const unsubscribeThemeChanged = window.floatingButtonAPI.onThemeChanged(applyTheme) + + window.addEventListener( + 'beforeunload', + () => { + unsubscribeLanguageChanged() + unsubscribeThemeChanged() + }, + { once: true } + ) +} + +bootstrap().catch((error) => { + console.error('Failed to bootstrap the floating renderer:', error) +}) diff --git a/src/renderer/settings/App.vue b/src/renderer/settings/App.vue index 32727a9147..690c9c9d1f 100644 --- a/src/renderer/settings/App.vue +++ b/src/renderer/settings/App.vue @@ -180,7 +180,7 @@ const toasterTheme = computed(() => // Detect platform to apply proper styling const { isMacOS, isWinMacOS } = useDeviceVersion() -const { t, locale } = useI18n() +const { t } = useI18n() const router = useRouter() const route = useRoute() const title = useTitle() @@ -576,13 +576,13 @@ const SETTINGS_TAB_TEST_IDS: Record = { const getSettingsTabTestId = (name: string) => SETTINGS_TAB_TEST_IDS[name] ?? `settings-tab-${name.replace(/^settings-/, '')}` -// Watch language changes and update i18n + HTML dir +// Keep the document direction aligned with the language store. watch( - () => languageStore.language, - async () => { - locale.value = await configClient.getLanguage() - document.documentElement.dir = languageStore.dir - } + () => languageStore.dir, + (direction) => { + document.documentElement.dir = direction + }, + { immediate: true } ) // Watch font size changes and update classes diff --git a/src/renderer/settings/main.ts b/src/renderer/settings/main.ts index 65d37d29ac..199f0937ab 100644 --- a/src/renderer/settings/main.ts +++ b/src/renderer/settings/main.ts @@ -2,13 +2,13 @@ import '@/assets/main.css' import { createPinia } from 'pinia' import { PiniaColada } from '@pinia/colada' import { createApp } from 'vue' -import App from './App.vue' import { createRouter, createWebHashHistory } from 'vue-router' -import { createI18n } from 'vue-i18n' -import locales, { pluralRules } from '@/i18n' +import App from './App.vue' +import { createRendererI18n } from '@/i18n/bootstrap' import { getSettingsRouteItems } from '@shared/settingsNavigation' import { preloadIcons } from '../src/lib/iconLoader' +import { createConfigClient } from '@api/ConfigClient' import { getRuntimeArch, getRuntimePlatform } from '@api/runtime' import { settingsRouteComponents } from './settingsRouteComponents' @@ -16,15 +16,6 @@ const runtimePlatform = getRuntimePlatform() const runtimeArch = getRuntimeArch() const settingsRouteItems = getSettingsRouteItems(runtimePlatform, runtimeArch) -// Create i18n instance -const i18n = createI18n({ - locale: 'zh-CN', - fallbackLocale: 'en-US', - legacy: false, - pluralRules, - messages: locales -}) - // Create router instance specifically for settings const router = createRouter({ history: createWebHashHistory(import.meta.env.BASE_URL), @@ -64,24 +55,36 @@ const router = createRouter({ ] }) -// Icons will be loaded asynchronously to improve startup performance -const pinia = createPinia() -const app = createApp(App) +async function bootstrap() { + const configClient = createConfigClient() + const { i18n, languageState } = await createRendererI18n({ + getLanguageState: () => configClient.getLanguageState() + }) -app.use(pinia) -app.use(PiniaColada, { - queryOptions: { - staleTime: 30_000, - gcTime: 300_000 - } -}) -app.use(i18n) -app.use(router) -app.mount('#app') + document.documentElement.dir = languageState.direction === 'rtl' ? 'rtl' : 'auto' -// Preload icons asynchronously after app mount to improve perceived startup time -setTimeout(() => { - preloadIcons().catch((error) => { - console.error('Failed to preload icons:', error) + const pinia = createPinia() + const app = createApp(App) + + app.use(pinia) + app.use(PiniaColada, { + queryOptions: { + staleTime: 30_000, + gcTime: 300_000 + } }) -}, 0) + app.use(i18n) + app.use(router) + app.mount('#app') + + // Preload icons asynchronously after app mount to improve perceived startup time + setTimeout(() => { + preloadIcons().catch((error) => { + console.error('Failed to preload icons:', error) + }) + }, 0) +} + +bootstrap().catch((error) => { + console.error('Failed to bootstrap the settings renderer:', error) +}) diff --git a/src/renderer/src/i18n/bootstrap.ts b/src/renderer/src/i18n/bootstrap.ts new file mode 100644 index 0000000000..cb7351f50e --- /dev/null +++ b/src/renderer/src/i18n/bootstrap.ts @@ -0,0 +1,89 @@ +import { createI18n } from 'vue-i18n' + +import { + FALLBACK_LOCALE, + loadLocaleMessages, + resolveSupportedLocale, + type RendererLocaleMessages, + type SupportedLocale +} from '.' +import { pluralRules } from './pluralRules' + +export type RendererLanguageState = { + requestedLanguage: string + locale: string + direction: 'auto' | 'rtl' | 'ltr' +} + +type BootstrapOptions = { + getLanguageState: () => Promise + loadMessages?: (locale: string) => Promise + onError?: (message: string, error: unknown) => void +} + +const fallbackLanguageState: RendererLanguageState = { + requestedLanguage: FALLBACK_LOCALE, + locale: FALLBACK_LOCALE, + direction: 'auto' +} + +export async function createRendererI18n({ + getLanguageState, + loadMessages = loadLocaleMessages, + onError = (message, error) => console.error(message, error) +}: BootstrapOptions) { + let languageState = fallbackLanguageState + + try { + languageState = await getLanguageState() + } catch (error) { + onError('Failed to read the renderer language state:', error) + } + + const requestedLocale = resolveSupportedLocale(languageState.locale) + const fallbackMessagesPromise = loadMessages(FALLBACK_LOCALE) + const requestedMessagesPromise = + requestedLocale === FALLBACK_LOCALE ? fallbackMessagesPromise : loadMessages(requestedLocale) + + let fallbackMessages: RendererLocaleMessages = {} + try { + fallbackMessages = await fallbackMessagesPromise + } catch (error) { + onError(`Failed to load fallback locale ${FALLBACK_LOCALE}:`, error) + } + + let locale: SupportedLocale = requestedLocale + let requestedMessages = fallbackMessages + if (requestedLocale !== FALLBACK_LOCALE) { + try { + requestedMessages = await requestedMessagesPromise + } catch (error) { + locale = FALLBACK_LOCALE + onError(`Failed to load locale ${requestedLocale}:`, error) + } + } + + const messages: Record = { + [FALLBACK_LOCALE]: fallbackMessages + } + if (locale !== FALLBACK_LOCALE) { + messages[locale] = requestedMessages + } + + const i18n = createI18n({ + locale, + fallbackLocale: FALLBACK_LOCALE, + legacy: false, + pluralRules, + messages + }) + + return { + i18n, + languageState: { + ...languageState, + locale, + direction: locale === requestedLocale ? languageState.direction : 'auto' + } satisfies RendererLanguageState + } +} diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 4027bc88aa..a7dae68289 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -1,102 +1,109 @@ -import zhCN from './zh-CN' -import enUS from './en-US' -import jaJP from './ja-JP' -import koKR from './ko-KR' -import zhHK from './zh-HK' -import zhTW from './zh-TW' -import ruRU from './ru-RU' -import frFR from './fr-FR' -import faIR from './fa-IR' -import ptBR from './pt-BR' -import daDK from './da-DK' -import heIL from './he-IL' -import esES from './es-ES' -import deDE from './de-DE' -import trTR from './tr-TR' -import idID from './id-ID' -import msMY from './ms-MY' -import itIT from './it-IT' -import plPL from './pl-PL' -import viVN from './vi-VN' +import type { LocaleMessageValue } from 'vue-i18n' -const locales = { - 'zh-CN': zhCN, - 'en-US': enUS, - 'zh-HK': zhHK, - 'zh-TW': zhTW, - 'ja-JP': jaJP, - 'ko-KR': koKR, - 'ru-RU': ruRU, - 'fr-FR': frFR, - 'fa-IR': faIR, - 'pt-BR': ptBR, - 'da-DK': daDK, - 'he-IL': heIL, - 'es-ES': esES, - 'de-DE': deDE, - 'tr-TR': trTR, - 'id-ID': idID, - 'ms-MY': msMY, - 'it-IT': itIT, - 'pl-PL': plPL, - 'vi-VN': viVN, - zh: zhCN, - en: enUS, - fr: frFR, - pt: ptBR, - da: daDK, - he: heIL, - es: esES, - de: deDE, - tr: trTR, - id: idID, - ms: msMY, - it: itIT, - pl: plPL, - vi: viVN +export { pluralRules } from './pluralRules' + +export const FALLBACK_LOCALE = 'en-US' as const + +export const SUPPORTED_LOCALES = [ + 'zh-CN', + 'en-US', + 'zh-HK', + 'zh-TW', + 'ja-JP', + 'ko-KR', + 'ru-RU', + 'fr-FR', + 'fa-IR', + 'pt-BR', + 'da-DK', + 'he-IL', + 'es-ES', + 'de-DE', + 'tr-TR', + 'id-ID', + 'ms-MY', + 'it-IT', + 'pl-PL', + 'vi-VN' +] as const + +export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number] +export type RendererLocaleMessages = Record + +type LocaleModule = { default: RendererLocaleMessages } +type LocaleLoader = () => Promise + +const localeLoaders: Record = { + 'zh-CN': () => import('./zh-CN'), + 'en-US': () => import('./en-US'), + 'zh-HK': () => import('./zh-HK'), + 'zh-TW': () => import('./zh-TW'), + 'ja-JP': () => import('./ja-JP'), + 'ko-KR': () => import('./ko-KR'), + 'ru-RU': () => import('./ru-RU'), + 'fr-FR': () => import('./fr-FR'), + 'fa-IR': () => import('./fa-IR'), + 'pt-BR': () => import('./pt-BR'), + 'da-DK': () => import('./da-DK'), + 'he-IL': () => import('./he-IL'), + 'es-ES': () => import('./es-ES'), + 'de-DE': () => import('./de-DE'), + 'tr-TR': () => import('./tr-TR'), + 'id-ID': () => import('./id-ID'), + 'ms-MY': () => import('./ms-MY'), + 'it-IT': () => import('./it-IT'), + 'pl-PL': () => import('./pl-PL'), + 'vi-VN': () => import('./vi-VN') } -export const pluralRules = { - 'ru-RU': (choice: number, choicesLength: number) => { - if (choicesLength !== 4) { - return Math.min(Math.abs(choice), choicesLength - 1) - } +const localeAliases: Record = { + zh: 'zh-CN', + en: 'en-US', + ja: 'ja-JP', + ko: 'ko-KR', + ru: 'ru-RU', + fr: 'fr-FR', + fa: 'fa-IR', + pt: 'pt-BR', + da: 'da-DK', + he: 'he-IL', + es: 'es-ES', + de: 'de-DE', + tr: 'tr-TR', + id: 'id-ID', + ms: 'ms-MY', + it: 'it-IT', + pl: 'pl-PL', + vi: 'vi-VN' +} - const absoluteChoice = Math.abs(choice) - if (absoluteChoice === 0) { - return 0 - } +const supportedLocaleLookup = new Map( + SUPPORTED_LOCALES.map((locale) => [locale.toLowerCase(), locale]) +) +const localeMessagePromises = new Map>() - const mod10 = absoluteChoice % 10 - const mod100 = absoluteChoice % 100 - if (mod10 === 1 && mod100 !== 11) { - return 1 - } - if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { - return 2 - } - return 3 - }, - 'pl-PL': (choice: number, choicesLength: number) => { - if (choicesLength !== 4) { - return Math.min(Math.abs(choice), choicesLength - 1) - } +export function resolveSupportedLocale(locale: string | null | undefined): SupportedLocale { + if (!locale) return FALLBACK_LOCALE - const absoluteChoice = Math.abs(choice) - if (absoluteChoice === 0) { - return 0 - } + const normalizedLocale = locale.replace('_', '-').toLowerCase() + return ( + supportedLocaleLookup.get(normalizedLocale) ?? + localeAliases[normalizedLocale] ?? + FALLBACK_LOCALE + ) +} - const mod10 = absoluteChoice % 10 - const mod100 = absoluteChoice % 100 - if (absoluteChoice === 1) { - return 1 - } - if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { - return 2 +export function loadLocaleMessages(locale: string): Promise { + const resolvedLocale = resolveSupportedLocale(locale) + const cachedPromise = localeMessagePromises.get(resolvedLocale) + if (cachedPromise) return cachedPromise + + const messagesPromise = localeLoaders[resolvedLocale]().then((module) => module.default) + localeMessagePromises.set(resolvedLocale, messagesPromise) + void messagesPromise.catch(() => { + if (localeMessagePromises.get(resolvedLocale) === messagesPromise) { + localeMessagePromises.delete(resolvedLocale) } - return 3 - } + }) + return messagesPromise } - -export default locales diff --git a/src/renderer/src/i18n/pluralRules.ts b/src/renderer/src/i18n/pluralRules.ts new file mode 100644 index 0000000000..bc083c04cf --- /dev/null +++ b/src/renderer/src/i18n/pluralRules.ts @@ -0,0 +1,42 @@ +export const pluralRules = { + 'ru-RU': (choice: number, choicesLength: number) => { + if (choicesLength !== 4) { + return Math.min(Math.abs(choice), choicesLength - 1) + } + + const absoluteChoice = Math.abs(choice) + if (absoluteChoice === 0) { + return 0 + } + + const mod10 = absoluteChoice % 10 + const mod100 = absoluteChoice % 100 + if (mod10 === 1 && mod100 !== 11) { + return 1 + } + if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { + return 2 + } + return 3 + }, + 'pl-PL': (choice: number, choicesLength: number) => { + if (choicesLength !== 4) { + return Math.min(Math.abs(choice), choicesLength - 1) + } + + const absoluteChoice = Math.abs(choice) + if (absoluteChoice === 0) { + return 0 + } + + const mod10 = absoluteChoice % 10 + const mod100 = absoluteChoice % 100 + if (absoluteChoice === 1) { + return 1 + } + if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { + return 2 + } + return 3 + } +} diff --git a/src/renderer/src/lib/icons/icon-collections.generated.ts b/src/renderer/src/lib/icons/icon-collections.generated.ts index e036858e96..7ffb6f2a7e 100644 --- a/src/renderer/src/lib/icons/icon-collections.generated.ts +++ b/src/renderer/src/lib/icons/icon-collections.generated.ts @@ -458,6 +458,9 @@ export const lucideIconCollection = { 'mouse-pointer-click': { body: '' }, + move: { + body: '' + }, 'move-right': { body: '' }, @@ -746,7 +749,7 @@ export const lucideIconCollection = { parent: 'circle-x' } }, - lastModified: 1778908382, + lastModified: 1783920389, width: 24, height: 24 } as const @@ -807,7 +810,7 @@ export const vscodeIconCollection = { } }, aliases: {}, - lastModified: 1779168064, + lastModified: 1783920591, width: 32, height: 32 } as const diff --git a/src/renderer/src/lib/icons/icon-whitelist.generated.ts b/src/renderer/src/lib/icons/icon-whitelist.generated.ts index 8ae68d8513..b3c6f2e214 100644 --- a/src/renderer/src/lib/icons/icon-whitelist.generated.ts +++ b/src/renderer/src/lib/icons/icon-whitelist.generated.ts @@ -160,6 +160,7 @@ export const GENERATED_ICON_WHITELIST: Record configClient.getLanguageState() + }) -const app = createApp(App) + document.documentElement.dir = languageState.direction === 'rtl' ? 'rtl' : 'auto' -app.use(pinia) -app.use(PiniaColada, { - queryOptions: { - // Renderer data loads are IPC bound; keep results warm for fast switches. - staleTime: 30_000, - gcTime: 300_000 - } -}) -app.use(router) -app.use(i18n) -app.mount('#app') + // Icons will be loaded asynchronously on app mount to improve startup performance + const pinia = createPinia() + const app = createApp(App) -// Preload icons asynchronously after app mount to improve perceived startup time -setTimeout(() => { - preloadIcons().catch((error) => { - console.error('Failed to preload icons:', error) + app.use(pinia) + app.use(PiniaColada, { + queryOptions: { + // Renderer data loads are IPC bound; keep results warm for fast switches. + staleTime: 30_000, + gcTime: 300_000 + } }) -}, 0) + app.use(router) + app.use(i18n) + app.mount('#app') + + // Preload icons asynchronously after app mount to improve perceived startup time + setTimeout(() => { + preloadIcons().catch((error) => { + console.error('Failed to preload icons:', error) + }) + }, 0) +} + +bootstrap().catch((error) => { + console.error('Failed to bootstrap the main renderer:', error) +}) diff --git a/src/renderer/src/stores/language.ts b/src/renderer/src/stores/language.ts index 1db496e318..6e95a5cb3d 100644 --- a/src/renderer/src/stores/language.ts +++ b/src/renderer/src/stores/language.ts @@ -1,50 +1,83 @@ import { defineStore } from 'pinia' -import { ref, onMounted } from 'vue' +import { onMounted, onScopeDispose, shallowRef } from 'vue' import { useI18n } from 'vue-i18n' -import { createConfigClient } from '../../api/ConfigClient' +import { createConfigClient } from '@api/ConfigClient' +import { loadLocaleMessages, resolveSupportedLocale } from '@/i18n' +import type { RendererLanguageState } from '@/i18n/bootstrap' const RTL_LIST = ['fa-IR', 'he-IL'] -let languageListenerRegistered = false + export const useLanguageStore = defineStore('language', () => { - const { locale } = useI18n({ useScope: 'global' }) - const language = ref('system') + const { locale, setLocaleMessage } = useI18n({ useScope: 'global' }) + const language = shallowRef('system') const configClient = createConfigClient() - const dir = ref('auto' as 'auto' | 'rtl' | 'ltr') - // 初始化设置 + const initialLocale = resolveSupportedLocale(locale.value) + const dir = shallowRef<'auto' | 'rtl'>(RTL_LIST.includes(initialLocale) ? 'rtl' : 'auto') + let transitionRevision = 0 + let updateRequestRevision = 0 + let removeLanguageListener: (() => void) | undefined + + const applyLanguageState = async (state: RendererLanguageState, revision: number) => { + const resolvedLocale = resolveSupportedLocale(state.locale) + + try { + const messages = await loadLocaleMessages(resolvedLocale) + if (revision !== transitionRevision) return false + + setLocaleMessage(resolvedLocale, messages) + locale.value = resolvedLocale + language.value = state.requestedLanguage || 'system' + dir.value = state.direction === 'rtl' || RTL_LIST.includes(resolvedLocale) ? 'rtl' : 'auto' + return true + } catch (error) { + if (revision === transitionRevision) { + console.error(`Failed to load locale ${resolvedLocale}:`, error) + } + return false + } + } + + const ensureLanguageListener = () => { + if (removeLanguageListener) return + + removeLanguageListener = configClient.onLanguageChanged((state) => { + const revision = ++transitionRevision + void applyLanguageState(state, revision) + }) + } + const initLanguage = async () => { + ensureLanguageListener() + const revision = ++transitionRevision + try { const languageState = await configClient.getLanguageState() - // 获取语言 - language.value = languageState.requestedLanguage || 'system' - // 设置语言 - locale.value = languageState.locale - dir.value = RTL_LIST.indexOf(locale.value) >= 0 ? 'rtl' : 'auto' - // 监听语言变更事件 - if (!languageListenerRegistered) { - languageListenerRegistered = true - configClient.onLanguageChanged((payload) => { - language.value = payload.requestedLanguage - locale.value = payload.locale - dir.value = payload.direction === 'rtl' ? 'rtl' : 'auto' - }) - } + await applyLanguageState(languageState, revision) } catch (error) { console.error('初始化语言失败:', error) } } - // 更新语言 const updateLanguage = async (newLanguage: string) => { - await configClient.setLanguage(newLanguage) - language.value = newLanguage + ensureLanguageListener() + const requestRevision = ++updateRequestRevision + const languageState = await configClient.setLanguage(newLanguage) + if (requestRevision !== updateRequestRevision) return + + const revision = ++transitionRevision + await applyLanguageState(languageState, revision) } - // 在 store 创建时初始化 onMounted(async () => { await initLanguage() }) + onScopeDispose(() => { + removeLanguageListener?.() + removeLanguageListener = undefined + }) + return { language, updateLanguage, diff --git a/test/renderer/i18n/localeLoading.test.ts b/test/renderer/i18n/localeLoading.test.ts new file mode 100644 index 0000000000..31267d4069 --- /dev/null +++ b/test/renderer/i18n/localeLoading.test.ts @@ -0,0 +1,107 @@ +import { describe, expect, it, vi } from 'vitest' + +vi.mock('vue-i18n', async () => vi.importActual('vue-i18n')) + +import { createRendererI18n } from '@/i18n/bootstrap' +import { + FALLBACK_LOCALE, + loadLocaleMessages, + resolveSupportedLocale, + type RendererLocaleMessages +} from '@/i18n' + +const createMessages = (label: string): RendererLocaleMessages => ({ + common: { + label + } +}) + +describe('renderer locale loading', () => { + it('normalizes supported locales and language aliases', () => { + expect(resolveSupportedLocale('zh_TW')).toBe('zh-TW') + expect(resolveSupportedLocale('PT')).toBe('pt-BR') + expect(resolveSupportedLocale('unknown')).toBe(FALLBACK_LOCALE) + expect(resolveSupportedLocale(undefined)).toBe(FALLBACK_LOCALE) + }) + + it('reuses the same locale import promise', async () => { + const firstLoad = loadLocaleMessages('en-US') + const secondLoad = loadLocaleMessages('en') + + expect(secondLoad).toBe(firstLoad) + expect(await firstLoad).toHaveProperty('common') + }) + + it('loads only the resolved locale and fallback before creating i18n', async () => { + const catalog: Record = { + 'en-US': createMessages('English'), + 'fr-FR': createMessages('Francais') + } + const loadMessages = vi.fn(async (locale: string) => catalog[locale]) + + const { i18n, languageState } = await createRendererI18n({ + getLanguageState: async () => ({ + requestedLanguage: 'fr-FR', + locale: 'fr-FR', + direction: 'auto' + }), + loadMessages + }) + + expect(loadMessages).toHaveBeenCalledTimes(2) + expect(loadMessages).toHaveBeenCalledWith('en-US') + expect(loadMessages).toHaveBeenCalledWith('fr-FR') + expect(i18n.global.locale.value).toBe('fr-FR') + expect(i18n.global.availableLocales).toEqual(['en-US', 'fr-FR']) + expect(languageState.locale).toBe('fr-FR') + }) + + it('falls back to English when the requested locale fails to load', async () => { + const onError = vi.fn() + const loadMessages = vi.fn(async (locale: string) => { + if (locale === 'en-US') return createMessages('English') + throw new Error('missing locale chunk') + }) + + const { i18n, languageState } = await createRendererI18n({ + getLanguageState: async () => ({ + requestedLanguage: 'fa-IR', + locale: 'fa-IR', + direction: 'rtl' + }), + loadMessages, + onError + }) + + expect(i18n.global.locale.value).toBe('en-US') + expect(i18n.global.getLocaleMessage('en-US')).toEqual(createMessages('English')) + expect(languageState).toMatchObject({ locale: 'en-US', direction: 'auto' }) + expect(onError).toHaveBeenCalledWith('Failed to load locale fa-IR:', expect.any(Error)) + }) + + it('boots with the fallback when reading language state fails', async () => { + const onError = vi.fn() + const loadMessages = vi.fn(async () => createMessages('English')) + + const { i18n, languageState } = await createRendererI18n({ + getLanguageState: async () => { + throw new Error('bridge unavailable') + }, + loadMessages, + onError + }) + + expect(loadMessages).toHaveBeenCalledOnce() + expect(loadMessages).toHaveBeenCalledWith('en-US') + expect(i18n.global.locale.value).toBe('en-US') + expect(languageState).toEqual({ + requestedLanguage: 'en-US', + locale: 'en-US', + direction: 'auto' + }) + expect(onError).toHaveBeenCalledWith( + 'Failed to read the renderer language state:', + expect.any(Error) + ) + }) +}) diff --git a/test/renderer/stores/languageStore.test.ts b/test/renderer/stores/languageStore.test.ts new file mode 100644 index 0000000000..9e2f9cdde4 --- /dev/null +++ b/test/renderer/stores/languageStore.test.ts @@ -0,0 +1,213 @@ +import { flushPromises, mount } from '@vue/test-utils' +import { createPinia } from 'pinia' +import { createI18n } from 'vue-i18n' +import { defineComponent, h } from 'vue' +import { beforeEach, describe, expect, it, vi } from 'vitest' + +import type { RendererLanguageState } from '@/i18n/bootstrap' +import type { RendererLocaleMessages } from '@/i18n' + +vi.mock('pinia', async () => vi.importActual('pinia')) +vi.mock('vue-i18n', async () => vi.importActual('vue-i18n')) + +const languageMocks = vi.hoisted(() => ({ + getLanguageState: vi.fn(), + setLanguage: vi.fn(), + onLanguageChanged: vi.fn(), + loadLocaleMessages: vi.fn(), + listener: undefined as ((state: RendererLanguageState) => void) | undefined, + removeListener: vi.fn() +})) + +vi.mock('@api/ConfigClient', () => ({ + createConfigClient: () => ({ + getLanguageState: languageMocks.getLanguageState, + setLanguage: languageMocks.setLanguage, + onLanguageChanged: languageMocks.onLanguageChanged + }) +})) + +vi.mock('@/i18n', async (importOriginal) => { + const actual = await importOriginal() + return { + ...actual, + loadLocaleMessages: languageMocks.loadLocaleMessages + } +}) + +import { useLanguageStore } from '@/stores/language' + +const ENGLISH_STATE: RendererLanguageState = { + requestedLanguage: 'en-US', + locale: 'en-US', + direction: 'auto' +} + +const createMessages = (locale: string): RendererLocaleMessages => ({ + common: { + locale + } +}) + +function deferred() { + let resolve!: (value: T) => void + let reject!: (reason?: unknown) => void + const promise = new Promise((resolvePromise, rejectPromise) => { + resolve = resolvePromise + reject = rejectPromise + }) + return { promise, resolve, reject } +} + +function mountLanguageStore() { + const pinia = createPinia() + const i18n = createI18n({ + legacy: false, + locale: 'en-US', + fallbackLocale: 'en-US', + messages: { + 'en-US': createMessages('en-US') + } + }) + let store!: ReturnType + + const Harness = defineComponent({ + setup() { + store = useLanguageStore() + return () => h('div') + } + }) + + const wrapper = mount(Harness, { + global: { + plugins: [pinia, i18n] + } + }) + + return { i18n, store, wrapper } +} + +describe('language store', () => { + beforeEach(() => { + vi.clearAllMocks() + languageMocks.listener = undefined + languageMocks.getLanguageState.mockResolvedValue(ENGLISH_STATE) + languageMocks.setLanguage.mockImplementation(async (language: string) => ({ + requestedLanguage: language, + locale: language, + direction: language === 'fa-IR' || language === 'he-IL' ? 'rtl' : 'auto' + })) + languageMocks.loadLocaleMessages.mockImplementation(async (locale: string) => + createMessages(locale) + ) + languageMocks.onLanguageChanged.mockImplementation( + (listener: (state: RendererLanguageState) => void) => { + languageMocks.listener = listener + return languageMocks.removeListener + } + ) + }) + + it('loads and registers the initial locale and cleans up its listener', async () => { + languageMocks.getLanguageState.mockResolvedValue({ + requestedLanguage: 'fa-IR', + locale: 'fa-IR', + direction: 'rtl' + }) + + const { i18n, store, wrapper } = mountLanguageStore() + await flushPromises() + + expect(languageMocks.loadLocaleMessages).toHaveBeenCalledWith('fa-IR') + expect(i18n.global.getLocaleMessage('fa-IR')).toEqual(createMessages('fa-IR')) + expect(i18n.global.locale.value).toBe('fa-IR') + expect(store.language).toBe('fa-IR') + expect(store.dir).toBe('rtl') + + wrapper.unmount() + store.$dispose() + expect(languageMocks.removeListener).toHaveBeenCalledOnce() + }) + + it('keeps the newest language event when an older load finishes later', async () => { + const { i18n } = mountLanguageStore() + await flushPromises() + + const frenchMessages = deferred() + languageMocks.loadLocaleMessages.mockImplementation((locale: string) => { + if (locale === 'fr-FR') return frenchMessages.promise + return Promise.resolve(createMessages(locale)) + }) + + languageMocks.listener?.({ + requestedLanguage: 'fr-FR', + locale: 'fr-FR', + direction: 'auto' + }) + await Promise.resolve() + expect(i18n.global.locale.value).toBe('en-US') + + languageMocks.listener?.({ + requestedLanguage: 'fa-IR', + locale: 'fa-IR', + direction: 'rtl' + }) + await flushPromises() + expect(i18n.global.locale.value).toBe('fa-IR') + + frenchMessages.resolve(createMessages('fr-FR')) + await flushPromises() + expect(i18n.global.locale.value).toBe('fa-IR') + }) + + it('ignores an older setLanguage response that resolves last', async () => { + const { i18n, store } = mountLanguageStore() + await flushPromises() + + const frenchState = deferred() + const persianState = deferred() + languageMocks.setLanguage.mockImplementation((language: string) => + language === 'fr-FR' ? frenchState.promise : persianState.promise + ) + + const frenchUpdate = store.updateLanguage('fr-FR') + const persianUpdate = store.updateLanguage('fa-IR') + + persianState.resolve({ + requestedLanguage: 'fa-IR', + locale: 'fa-IR', + direction: 'rtl' + }) + await persianUpdate + + frenchState.resolve({ + requestedLanguage: 'fr-FR', + locale: 'fr-FR', + direction: 'auto' + }) + await frenchUpdate + + expect(i18n.global.locale.value).toBe('fa-IR') + expect(store.language).toBe('fa-IR') + expect(store.dir).toBe('rtl') + }) + + it('keeps the active locale when a new locale chunk fails', async () => { + const consoleError = vi.spyOn(console, 'error').mockImplementation(() => undefined) + const { i18n, store } = mountLanguageStore() + await flushPromises() + + languageMocks.loadLocaleMessages.mockRejectedValueOnce(new Error('chunk unavailable')) + languageMocks.listener?.({ + requestedLanguage: 'fr-FR', + locale: 'fr-FR', + direction: 'auto' + }) + await flushPromises() + + expect(i18n.global.locale.value).toBe('en-US') + expect(store.language).toBe('en-US') + expect(consoleError).toHaveBeenCalledWith('Failed to load locale fr-FR:', expect.any(Error)) + consoleError.mockRestore() + }) +})