diff --git a/assets/zcode-context-insight/icon.png b/assets/zcode-context-insight/icon.png new file mode 100644 index 0000000..af7c7d0 Binary files /dev/null and b/assets/zcode-context-insight/icon.png differ diff --git a/external_plugins/zcode-context-insight/.zcode-plugin/plugin.json b/external_plugins/zcode-context-insight/.zcode-plugin/plugin.json new file mode 100644 index 0000000..5964b47 --- /dev/null +++ b/external_plugins/zcode-context-insight/.zcode-plugin/plugin.json @@ -0,0 +1,80 @@ +{ + "name": "zcode-context-insight", + "version": "0.1.0", + "description": "See what every model request carries: context composition, per-step trend, full request browser, injections and compactions, file activity, the agent fleet, and cross-session insights — read-only and offline.", + "description_i18n": { + "en": "See what every model request carries: context composition, per-step trend, full request browser, injections and compactions, file activity, the agent fleet, and cross-session insights — read-only and offline.", + "zh-CN": "查看每次模型请求到底带了什么:上下文组成、逐请求趋势、完整请求浏览器、注入与压缩事件、文件活动、Agent 编队以及跨会话洞察——只读、离线。" + }, + "author": { + "name": "bowenliang123", + "url": "https://github.com/bowenliang123" + }, + "license": "Apache-2.0", + "homepage": "https://github.com/bowenliang123/zcode-context-insight", + "repository": { + "type": "git", + "url": "git+https://github.com/bowenliang123/zcode-context-insight.git" + }, + "userConfig": { + "dataRoot": { + "type": "string", + "title": "ZCode CLI data directory", + "description": "Optional directory containing db/, rollout/, debug/ and log/. Empty uses ~/.zcode/cli.", + "default": "" + }, + "dbPath": { + "type": "string", + "title": "Session database", + "description": "Optional absolute path to ZCode's db.sqlite. Empty uses /db/db.sqlite.", + "default": "" + }, + "contextWindow": { + "type": "number", + "title": "Context-window override", + "description": "Optional token window used when the model cannot be resolved from ZCode's provider config or the bundled model catalog. 0 = automatic.", + "default": 0 + }, + "priceFile": { + "type": "string", + "title": "Custom price book", + "description": "Optional path to a JSON price book with the same shape as models.dev's providers map. Empty uses the bundled snapshot.", + "default": "" + } + }, + "mcpServers": { + "context": { + "type": "stdio", + "command": "node", + "args": [ + "${ZCODE_PLUGIN_ROOT}/dist/server.mjs" + ], + "cwd": "${ZCODE_PROJECT_DIR}", + "env": { + "ZCODE_CONTEXT_DATA_ROOT": "${user_config.dataRoot}", + "ZCODE_CONTEXT_DB_PATH": "${user_config.dbPath}", + "ZCODE_CONTEXT_WINDOW": "${user_config.contextWindow}", + "ZCODE_CONTEXT_PRICE_FILE": "${user_config.priceFile}", + "ZCODE_PLUGIN_DATA": "${ZCODE_PLUGIN_DATA}" + } + } + }, + "ui": { + "surfaces": [ + { + "id": "context", + "title": { + "en": "Context", + "en-US": "Context", + "zh-CN": "上下文" + }, + "icon": "chart-column", + "server": "context", + "resourceUri": "ui://zcode-context-insight/context.html", + "availability": "session" + } + ] + }, + "commands": "commands", + "skills": "skills" +} diff --git a/external_plugins/zcode-context-insight/LICENSE b/external_plugins/zcode-context-insight/LICENSE new file mode 100644 index 0000000..5debdb3 --- /dev/null +++ b/external_plugins/zcode-context-insight/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 bowenliang123 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/external_plugins/zcode-context-insight/NOTICE b/external_plugins/zcode-context-insight/NOTICE new file mode 100644 index 0000000..2d4b7db --- /dev/null +++ b/external_plugins/zcode-context-insight/NOTICE @@ -0,0 +1,27 @@ +zcode-context-insight +Copyright 2026 bowenliang123 + +This product includes software and design inspiration developed by third parties: + +1. dsh-context (https://github.com/bowenliang123/dsh-context) + Licensed under the Apache License, Version 2.0. + The feature set, interaction model and several token-accounting conventions in this + project are adapted from dsh-context. The implementation here targets ZCode's session + store and MCP Apps host contract instead of DeepSeek Harness projections. + +2. ZCode (https://github.com/zai-org/ZCode) + Licensed under the Apache License, Version 2.0. + UI_PLUGIN.md and the host source define the MCP Apps surface, session metadata and + data-retention semantics this plugin follows. + +3. models.dev (https://models.dev) + The bundled model catalog in src/shared/models.json is a compact snapshot of the + models.dev public API, used for list-price estimates and context-window fallbacks. + No model data is fetched at runtime. + +4. DeepSeek image-token calculator + The attachment token estimate is a port of the public DeepSeek vision token + calculator (14px patches, 3:1 downsampling, 384-token cap). + +The MCP SDK and Zod are distributed under their respective licenses; see their +package metadata in the build environment. diff --git a/external_plugins/zcode-context-insight/README.md b/external_plugins/zcode-context-insight/README.md new file mode 100644 index 0000000..602dbff --- /dev/null +++ b/external_plugins/zcode-context-insight/README.md @@ -0,0 +1,240 @@ + +# zcode-context-insight + +[中文](README_CN.md) + +**Context insight and management for ZCode, adapted from [dsh-context](https://github.com/bowenliang123/dsh-context).** + +`zcode-context-insight` turns what ZCode already records on your machine into a session side panel: + +- **Context** — a compact DSH-style dashboard for the current request: composition, Token and Timing stats, the per-request trend, the request browser, context events, and file activity. +- **Fleet** — the current agent, its parents, siblings and every subagent, with live status, billed tokens, estimated cost and context occupancy. +- **Insights** — cross-session usage: KPI band, 7-day chart, 8-week heatmap, token mix, aggregate composition, and searchable session cards. +- **`/context`** — a read-only report for the current session, without leaving the chat. +- **Preferences** — per-user defaults for the trend, sorting, currency, language and context-window override. + +It is read-only and offline: no session edits, no model calls, no network. + +## Install / update + +**Requirements:** ZCode Desktop **3.15.1+** with the official MCP Apps UI contract, and **Node.js 24+** on `PATH` (`node -v`). Runtime dependencies are bundled in `dist/`; no npm or build tools are needed after installation. + +### From the ZCode plugin marketplace + +Install **zcode-context-insight** from **Settings → Plugin Management**, then enable it. In a session, open the right-side panel switcher (`+`) and choose **Context / 上下文**. + +### Local checkout (standalone repository) + +```sh +npm install +npm run build +npm run package +``` + +`npm run package` writes the installable plugin to `plugins/zcode-context-insight/` and a local catalog to `plugins/marketplace.json`. + +1. Open **Settings → Plugin Management → Discover**. +2. Add the absolute path to `/plugins` as a plugin marketplace. +3. Install **zcode-context-insight**, then enable it. +4. Restart ZCode once if the app was already running when you installed it. +5. In a session, open the right-side panel switcher (`+`) and choose **Context / 上下文**. + +To update: run `npm run build && npm run package`, refresh the marketplace, and reinstall/update the plugin. Keep the same local market name. + +For development, `npm run watch` rebuilds on changes and mirrors the runtime into the installed plugin cache. UI-only changes are picked up by closing and reopening the panel; server or worker changes need a ZCode restart. + +### From GitHub (standalone repository) + +Add `bowenliang123/zcode-context-insight` (or the full repository URL) as a plugin marketplace, install **zcode-context-insight**, and enable it. In the standalone repository, the root `marketplace.json` points at the packaged plugin under `plugins/zcode-context-insight`. + +## Use it + +The Context panel follows DSH's right-sidebar arrangement: a compact metrics strip, Token Stats, Timing Stats, Current Context and Context Trend. Browser, Context Events and File Activity sit behind a slim detail switcher below the trend, so the sidebar stays readable. + +![The Context panel](docs/images/context-panel.png) + +| Area | What it answers | +| --- | --- | +| **Metrics strip** | Turns, steps, tool calls, agent family size, cache-hit rate, estimated cost — with an expandable full stats card. | +| **Token Stats** | Where the billed tokens went, split by composition and closed by the provider-exact output. | +| **Timing Stats** | How active time split across waiting for the first token, generation, tool runs and overhead. | +| **Current Context** | What the window carries right now, against the model's window, including the output reserve and compaction headroom. | +| **Context Trend** | One bar per request, with Step/Turn, Total/Delta, a continuous Overview, DNA fingerprints, Adaptive scaling and a duration curve. | +| **Context Browser** | What any selected request was assembled from: categories, search, sort, changes, DNA order and full element content. | +| **Context Events** | Injections, compactions, model switches and rewinds, with a drill-down into what a compaction summarized. | +| **File Activity** | Read, written and searched paths, line deltas and the per-operation log. | + +The step selector at the top pins a request. **Load earlier requests** extends the loaded window. When new requests arrive while you are reading history, the panel offers **N newer** and **Latest** instead of stealing your selection. + +### 🧱 Current Context + +A segment bar against the resolved context window: system prompt, tool schemas, user messages, injected context, skill injections, assistant replies and tool results, each with its ≈token figure and share. The hatched tail is the output reserve; the remaining space is compaction headroom. + +The provider-reported prompt total anchors the bar, so the headline figure matches the request bill. When the system prompt and tool schemas were not retained for an older request, the panel says so and records the missing remainder as **Unrecorded** rather than inventing a split. + +### 📈 Context Trend + +![Overview area](docs/images/context-overview.png) + +- **Steps / Turns** — one bar per model request, or one per turn using the turn's last request. +- **Total / Delta** — cumulative composition, or the signed change against the previous record. +- **Overview** — the whole loaded session as one continuous stacked area, scaled to the session-wide maximum. It has five axis labels, turn labels and a duration curve; hover to scrub, click to pin. This is not a per-request 100% ribbon: growth and compaction drops stay visible. +- **DNA** — the newest 120 loaded trend bars become per-item fingerprints, and the browser switches to the flat DNA list. Older bars keep their category colors. Bands are fetched as a compact per-request series and kept across polling refreshes. + +![DNA fingerprints and browser](docs/images/context-dna.png) + +- **Adaptive** scales the chart to the visible maximum; **Duration** overlays each request's active time. +- **Hover & pin** — scrub for a request tooltip; click to pin the step. The brief below the chart shows **User / In / Response**, the provider's **Actual prompt / Output / Cache**, and opens the exact item in the browser. + +### 🧭 Context Browser + +![Context Browser](docs/images/context-browser.png) + +Choose **Categories**, **Changes** or **DNA**: + +- **Categories** — collapsible groups, token totals, counts and change badges. Search, sort by size/name/prompt order/calls, and load further pages. +- **Changes** — diff the selected request against the previous step or turn: added, removed, changed, with signed token deltas. +- **DNA** — a flat prompt-order list, newest first, with position, category, entering step and token price. + +Click any item to read its full content: system prompt, tool schema, message text, reasoning, tool arguments and result body. Tool cards include status, argument table, raw JSON and Markdown/text views; large content is loaded in pages. + +Tool schema rows carry a source chip (`built-in`, `plugin`, or `mcp:`) and a call count. The assistant category can be filtered by **Thinking / Tools / Answer**. + +### ⚡ Context Events + +Every runtime injection, compaction, model switch and rewind is listed with its producer, net token delta, step and time. Filter chips cover the kinds present in the session. + +Click a compaction to open **What was summarized**: tokens before/after, summarized and kept counts, duration, and the messages on the active branch. The browser can compare the request before and after. An interrupted or boundary-less compaction says its summarized content is unavailable instead of failing. + +### 📁 File Activity + +![File Activity](docs/images/file-activity.png) + +Open **File Activity** from the detail switcher: + +- Read / Written / Searched / Images filters and a path search. +- Sort by operations, latest, path, name or added lines. +- Expand a file for its per-operation log; each op jumps to the corresponding tool result. +- Edits use exact recorded additions/deletions when available; writes fall back to content line counts; shell-derived operations are marked as estimates. + +## 🚢 Fleet + +![Fleet](docs/images/fleet.png) + +Open the **Fleet** tab to see the current agent, its parents, siblings and every descendant as one card each: + +- role (current / parent / sibling / subagent), task type and model; +- billed tokens, estimated cost and cache-hit rate; +- latest context size and occupancy; +- running/completed/error status, with a pulse for a running agent. + +Click a card for the initial prompt, latest reply, usage, timing and direct children. The panel host does not expose session switching, so Fleet is informational; open another session from ZCode's session list. + +## 🗂️ Insights + +![Insights](docs/images/insights.png) + +The **Insights** tab aggregates the local store across sessions: + +- **KPIs** — sessions, billed tokens, estimated cost, cache-hit rate, model calls and average latest context. +- **7-day chart** — daily billed tokens with estimated cost. +- **Heatmap** — the last 8 weeks of daily billed tokens; click a day to filter the session cards. +- **Token mix** — prompt, cache reads and output. +- **Aggregate composition** — across the 12 most recent sessions, with the count stated. +- **Session cards** — title, workspace, model, tokens, cost, cache hit and context occupancy; filter by range, search, sort and group by workspace. + +Range, day, search and sorting apply to the cards. Usage comes only from sessions whose local usage rows are still retained; the panel says so. When the payload budget trims the card list, it also states how many of the total sessions are shown. + +## ⌨️ `/context` + +Type `/context` in the composer. The plugin's model-visible `get_context_report` tool reads the current session and returns a concise report: prompt size, occupancy, composition, counts, cost, recent events and coverage. The command asks the agent to present it without inventing figures; the interactive browser remains in the panel. + +## ⚙️ Preferences + +![Preferences](docs/images/settings.png) + +The gear opens per-user preferences: + +- default view, trend granularity and mode, comparison baseline; +- duration curve, file and tool sort; +- currency and language; +- context-window override (when ZCode's provider config and the bundled catalog cannot resolve one); +- compact cards. + +Preferences are stored under the plugin data directory (`ZCODE_PLUGIN_DATA`, or `~/.zcode/zcode-context-insight/preferences.json`) and never change the session. + +## Good to know + +**Estimates vs actuals.** Category figures use a script-weighted heuristic (≈4 ASCII / 1.5 CJK / 2 other characters per token) and are anchored to the provider-reported prompt total. Prompt, output and cache counts are exact. The trend tooltip and brief print the provider-reported actuals next to the estimates. + +**Context windows.** Resolution order: your override → ZCode's provider config → bundled models.dev snapshot → unknown. Unknown windows stay unknown; the panel does not fabricate a percentage. Costs are list-price estimates from the same offline snapshot; unknown models show `—`. + +**Messages vs headers.** Message composition is reconstructed from ZCode's complete SQLite session store, including tool calls/results, synthetic reminders, compaction summaries, images and attachments. System prompts and tool schemas come from model-I/O trajectories. Under ZCode's default bounded retention, older headers may be approximated from the nearest recorded request; the Coverage card and footer say when. + +**Retention.** Enable **Settings → General → Keep complete model I/O** in ZCode for exact historical headers. It applies to future requests only; already discarded records cannot be recovered. The plugin never changes this setting. + +**Pruning and rewinds.** A request after a compaction excludes the summarized messages; the active rewind branch is followed for items, while session-wide counts and historical activity remain whole-session facts. + +**Adaptation limits.** ZCode exposes session-scoped `ui.surfaces` only, so Fleet and Insights are internal tabs rather than first-class sidebar pages, and the host has no session-switch API. There is no prompt prefix/suffix injection. DNA forces Total mode (per-item DNA Delta is not implemented) and covers the newest 120 loaded requests. Image and file attachments show metadata and text where recorded; no external resources are loaded. Fleet, file preview and session-jump behavior therefore differ from DSH. + +**I18n.** English and 简体中文. + +## Development + +These commands belong to the standalone repository. In the marketplace source package, build with `pnpm install --frozen-lockfile` and `pnpm build` from the marketplace repository root, and run tests with `node --test test/*.test.mjs`. + +```sh +npm install # esbuild + MCP SDK +npm run build # dist/server.mjs, dist/worker.mjs, dist/context.html +npm run watch # rebuild on changes + sync the installed dev plugin +npm run register # build, package, register/enable the local plugin +npm test # domain tests +npm run check # manifest, build, syntax and environment checks +npm run smoke # live local database smoke +npm run mcp-smoke # stdio MCP handshake, tools, binding, Insights +npm run preview # browser preview over the real read-only service +npm run test-host # MCP Apps AppBridge + iframe handshake +npm run package # packaged plugin + local marketplace +``` + +`npm run preview` serves the built panel on `127.0.0.1:4180` with real local data; append `?theme=dark` or `?lang=en`. `npm run test-host` serves the same panel through a real `@modelcontextprotocol/ext-apps` AppBridge on `127.0.0.1:4190`. + +Watch loop details: UI-only edits are picked up by closing and reopening the Context panel (the MCP resource is re-read on open). Server/worker edits require restarting ZCode because the running MCP process keeps its module graph. + +Key paths: + +```text +src/server.mjs MCP stdio server and session binding +src/worker.mjs read-only SQLite worker +src/service.mjs cached session view, aggregate, payload fitting +src/data/db.mjs schema-tolerant bounded SQL +src/data/rollout.mjs model-I/O full/delta/tail reader +src/domain/compose.mjs composition, trend, diff, brief, compaction cuts +src/domain/items.mjs element extraction and token estimates +src/domain/events.mjs injections, compactions, model switches, rewinds +src/domain/files.mjs file operations and aggregation +src/domain/detail.mjs element and summarized-message content +ui/app.mjs MCP App UI +ui/styles.css card/chart visual system +``` + +## Privacy + +- Reads local ZCode data only: `~/.zcode/cli/db/db.sqlite` and its WAL, `rollout/`, `debug/`, `log/`, plus the model rules in `~/.zcode/v2/provider_config.json` and the retention flag in `~/.zcode/v2/setting.json`. +- SQLite is opened `readOnly` with `PRAGMA query_only`; no migrations, writes or locks. +- No network, telemetry or model calls. The HTML resource declares an empty CSP allowlist. +- Full tool outputs are read one element at a time and chunked; result-producing tools are capped under ZCode's 64 KiB `structuredContent` budget, with pages for large content. + +## Compatibility + +- ZCode Desktop **3.15.1+**; tested on **3.15.3**. +- Node.js **24+** (`node:sqlite`, worker threads). +- See [docs/verification.md](docs/verification.md) for the tested host, commands, coverage caveats and known limits. + +## Like it? + +If `zcode-context-insight` helped you see what your agent is carrying around, a ⭐ on [GitHub](https://github.com/bowenliang123/zcode-context-insight) is much appreciated. Issues and PRs are welcome. + +## License + +[Apache-2.0](LICENSE). Feature and interaction design adapted from [dsh-context](https://github.com/bowenliang123/dsh-context); model metadata and list prices from [models.dev](https://models.dev). diff --git a/external_plugins/zcode-context-insight/README_CN.md b/external_plugins/zcode-context-insight/README_CN.md new file mode 100644 index 0000000..01847aa --- /dev/null +++ b/external_plugins/zcode-context-insight/README_CN.md @@ -0,0 +1,243 @@ +![zcode-context-insight — ZCode 上下文洞察](docs/images/context-panel.png) + +# ZCode 上下文洞察插件 zcode-context-insight + +[English](README.md) + +**Apache-2.0 · ZCode Desktop 3.15.1+ · Node.js 24+ · Read-only · Offline** + +**面向 ZCode 的上下文洞察与管理面板,功能与交互改编自 [dsh-context](https://github.com/bowenliang123/dsh-context)。** + +`zcode-context-insight` 把 ZCode 已经记录在本机的数据变成会话侧栏: + +- **上下文**:当前请求的紧凑仪表盘,包括组成、Token 统计、耗时统计、逐请求趋势、请求浏览器、上下文事件与文件活动。 +- **编队**:当前 Agent、父级、兄弟与所有子 Agent,含运行状态、计费 Token、预估费用与上下文占用。 +- **洞察**:跨会话用量、KPI、7 日图、8 周热力图、Token 构成、聚合组成与可搜索的会话卡片。 +- **`/context`**:不离开对话即可获得当前会话的只读报告。 +- **偏好设置**:趋势、排序、币种、语言与上下文窗口覆盖的每用户默认值。 + +它只读、离线:不修改会话、不调用模型、不访问网络。 + +## 安装 / 更新 + +**要求:** ZCode Desktop **3.15.1+**(需要官方 MCP Apps UI 契约),以及 `PATH` 中可用的 **Node.js 24+**(`node -v`)。运行时依赖已打进 `dist/`,安装后不需要 npm 或构建工具。 + +### 从 ZCode 插件市场安装 + +在 **设置 → 插件管理** 中安装 **zcode-context-insight** 并启用。打开任意会话,点击右侧面板的 **+**,选择 **上下文**。 + +### 本地开发目录(standalone 仓库) + +```sh +npm install +npm run build +npm run package +``` + +`npm run package` 会把可安装插件写到 `plugins/zcode-context-insight/`,并在 `plugins/marketplace.json` 生成本地市场目录。 + +1. 打开 **设置 → 插件管理 → 发现**。 +2. 添加 `/plugins` 的绝对路径作为插件市场。 +3. 安装 **zcode-context-insight**,然后启用。 +4. 如果安装时 ZCode 已经在运行,重启一次应用。 +5. 打开任意会话,点击右侧面板的 **+**,选择 **上下文**。 + +更新:执行 `npm run build && npm run package`,刷新市场,然后重新安装/更新插件。请保留同一个本地市场名称。 + +开发时,`npm run watch` 会在文件变化后重建,并把运行时同步到已安装的插件缓存。只改 UI 时,关闭再重新打开面板即可;改动服务端或 Worker 后需要重启 ZCode。 + +### 从 GitHub 安装(standalone 仓库) + +把 `bowenliang123/zcode-context-insight`(或完整仓库 URL)添加为插件市场,安装 **zcode-context-insight** 并启用。在 standalone 仓库中,根目录的 `marketplace.json` 指向 `plugins/zcode-context-insight` 下的打包产物。 + +## 使用 + +上下文面板沿用 DSH 的右侧栏排布:紧凑指标条、Token 统计、耗时统计、当前上下文与上下文趋势。浏览器、上下文事件与文件活动收在趋势下方的轻量详情切换中,让侧栏保持可读。 + +![上下文面板](docs/images/context-panel.png) + +| 区域 | 回答什么 | +| --- | --- | +| **指标条** | 回合、步骤、工具调用、Agent 网络规模、缓存命中率、预估费用;可展开完整统计卡片。 | +| **Token 统计** | 计费 Token 去了哪里:按组成拆分,并以 Provider 精确的输出量收口。 | +| **耗时统计** | 活跃时间如何分配到首 Token 等待、模型生成、工具运行与其他开销。 | +| **当前上下文** | 窗口此刻装了什么,以及相对模型窗口的占用、输出预留与压缩余量。 | +| **上下文趋势** | 每个请求一根柱:步骤/回合、总量/变化、连续总览、DNA 指纹、自适应缩放与耗时曲线。 | +| **上下文浏览器** | 任意选中请求由什么组装而成:分类、搜索、排序、变化、DNA 顺序与完整条目内容。 | +| **上下文事件** | 注入、压缩、模型切换与回退,可下钻查看一次压缩摘要了什么。 | +| **文件活动** | 读取、写入与搜索的路径、行数差值与逐操作日志。 | + +顶部步骤选择器可固定一个请求。**加载更早的请求** 扩展已加载窗口。阅读历史时若有新请求到达,面板提供 **N 个更新** 与 **最新**,不会抢走你的选择。 + +### 🧱 当前上下文 + +相对解析出的上下文窗口绘制分段条:系统提示、工具 Schema、用户消息、注入上下文、技能注入、助手回复与工具结果,各自标注 ≈Token 与占比。斜线阴影尾部是输出预留,剩余空间是压缩余量。 + +Provider 报告的提示总量锚定整条分段条,因此头部数字与请求账单一致。较早请求若未保留系统提示和工具 Schema,面板会明确说明,并把缺失的余量标为 **未记录**,而不是编造拆分。 + +### 📈 上下文趋势 + +![总览面积图](docs/images/context-overview.png) + +- **步骤 / 回合** — 每个模型请求一根柱,或用回合内最后一个请求表示一个回合。 +- **总量 / 变化** — 累计组成,或相对上一条记录的有符号变化。 +- **总览** — 把整个已加载会话画成一张连续堆叠面积图,按会话内最大值缩放。图上有五个刻度、回合标签与耗时曲线;悬停可扫查,点击可固定。它不是每个请求都归一化为 100% 的色带:增长与压缩造成的下降都会保留。 +- **DNA** — 最新的 120 根已加载趋势柱变成逐条目指纹,同时浏览器切换到摊平的 DNA 列表;更早的柱子保留分类颜色。条带按紧凑的逐请求序列获取,并在轮询刷新之间保留。 + +![DNA 指纹与浏览器](docs/images/context-dna.png) + +- **自适应** 按可见最大值缩放图表;**耗时** 叠加每个请求的活跃时间。 +- **悬停与固定** — 扫查请求提示;点击固定该步骤。图表下方的简述显示 **用户 / 进入 / 响应**、Provider 的 **实际提示 / 输出 / cache**,并可打开浏览器中对应的精确条目。 + +### 🧭 上下文浏览器 + +![上下文浏览器](docs/images/context-browser.png) + +可选择 **分类**、**变化** 或 **DNA**: + +- **分类** — 可折叠分组、Token 合计、条目数与变化徽标。支持搜索、按大小/名称/提示顺序/调用次数排序,以及继续加载。 +- **变化** — 将选中请求与上一步或上一回合对比:新增、移除、修改,并带 Token 差值。 +- **DNA** — 按提示顺序摊平的列表,最新在上,显示位置、分类、引入步骤与 Token 代价。 + +点击任意条目可阅读其完整内容:系统提示、工具 Schema、消息正文、推理、工具参数与结果正文。工具卡片包含状态、参数表、原始 JSON 与 Markdown/文本视图;大内容分页加载。 + +工具 Schema 行带有来源标签(`built-in`、`plugin` 或 `mcp:`)与调用次数。助手分类可按 **思考 / 工具 / 回答** 筛选。 + +### ⚡ 上下文事件 + +每次运行时注入、压缩、模型切换与回退都会列出其生产者、净 Token 变化、步骤与时间。筛选标签覆盖当前会话中实际出现的事件类型。 + +点击一次压缩可打开 **被摘要的内容**:压缩前后 Token、被摘要与保留的条数、耗时,以及活动分支上的消息。浏览器可对比压缩前后的请求。中断或没有边界的压缩会明确说明摘要内容不可用,而不是报错。 + +### 📁 文件活动 + +![文件活动](docs/images/file-activity.png) + +从详情切换中打开 **文件活动**: + +- 读取 / 写入 / 搜索 / 图片筛选,以及路径搜索。 +- 按操作数、最近、路径、名称或新增行排序。 +- 展开文件查看逐操作日志;每次操作可跳转到对应的工具结果。 +- 编辑使用记录中的精确增删行数;写入回退到内容行数;由 Shell 推断的操作会标注为估算。 + +## 🚢 编队 + +![编队](docs/images/fleet.png) + +打开 **编队** 标签,当前 Agent、父级、兄弟与所有后代各显示为一张卡片: + +- 角色(当前 / 父级 / 兄弟 / 子 Agent)、任务类型与模型; +- 计费 Token、预估费用与缓存命中率; +- 最新上下文大小与占用; +- 运行 / 完成 / 错误状态,运行中的 Agent 带脉冲。 + +点击卡片查看初始提示、最新回复、用量、耗时与直接子级。面板宿主没有提供会话切换,因此编队是信息视图;请从 ZCode 的会话列表打开另一个会话。 + +## 🗂️ 洞察 + +![洞察](docs/images/insights.png) + +**洞察** 标签聚合本地存储中的跨会话数据: + +- **KPI** — 会话数、计费 Token、预估费用、缓存命中率、模型调用数与平均最新上下文。 +- **7 日图** — 每日计费 Token 与预估费用。 +- **热力图** — 最近 8 周的每日计费 Token;点击某天可筛选会话卡片。 +- **Token 构成** — 提示、缓存读取与输出。 +- **聚合组成** — 最近 12 个会话的合计,并标明会话数。 +- **会话卡片** — 标题、工作区、模型、Token、费用、缓存命中与上下文占用;支持范围、搜索、排序与按工作区分组。 + +范围、日期、搜索与排序作用于会话卡片。用量只来自本地仍保留用量行的会话,面板会明确说明;如果载荷预算裁剪了卡片列表,面板也会说明当前展示了多少个会话(共多少)。 + +## ⌨️ `/context` + +在输入框输入 `/context`。插件的模型可见工具 `get_context_report` 读取当前会话并返回紧凑报告:提示大小、占用、组成、计数、费用、最近事件与数据覆盖。命令要求 Agent 如实呈现,不编造数字;完整交互浏览器仍在面板中。 + +## ⚙️ 偏好设置 + +![偏好设置](docs/images/settings.png) + +齿轮按钮打开每用户偏好: + +- 默认视图、趋势粒度与模式、对比基线; +- 耗时曲线、文件与工具排序; +- 币种与语言; +- 上下文窗口覆盖(当 ZCode Provider 配置与内置目录都无法解析时); +- 紧凑卡片。 + +偏好保存在插件数据目录(`ZCODE_PLUGIN_DATA`,或 `~/.zcode/zcode-context-insight/preferences.json`),不会修改会话。 + +## 需要知道的细节 + +**估算与实测。** 分类数字使用按字符脚本加权的启发式(约 4 个 ASCII / 1.5 个 CJK / 2 个其他字符每 Token),并锚定到 Provider 报告的提示总量。提示、输出与缓存计数是精确值。趋势提示与简述会把 Provider 实测值显示在估算值旁边。 + +**上下文窗口。** 解析顺序:你的覆盖 → ZCode 的 Provider 配置 → 内置 models.dev 快照 → 未知。未知窗口保持未知,面板不会伪造百分比。费用是同一离线快照的标价估算;未知模型显示 `—`。 + +**消息与头部。** 消息组成从 ZCode 完整的 SQLite 会话存储重建,包括工具调用/结果、合成提醒、压缩摘要、图片与附件。系统提示与工具 Schema 来自模型 I/O 轨迹。在 ZCode 默认的有界保留下,较早的头部可能由最近的已记录请求近似;覆盖卡片与页脚会明确说明。 + +**保留策略。** 如需精确的历史头部,请开启 **设置 → 通用 → 完整保留模型 I/O**。它只影响未来请求,已经丢弃的记录无法恢复;插件不会修改这个设置。 + +**压缩与回退。** 压缩之后的请求会排除被摘要的消息;条目跟随活动回退分支,而会话级计数与历史活动仍按整个会话统计。 + +**适配限制。** ZCode 只暴露会话级 `ui.surfaces`,因此编队与洞察是面板内标签,而不是一级侧栏页;宿主也没有会话切换 API。插件无法注入提示词前缀/后缀。DNA 强制使用总量模式(不支持逐条目 DNA Delta),覆盖最新的 120 个已加载请求。图片与文件附件只显示元数据与已记录的文本;不加载外部资源。编队的会话跳转、文件预览等行为因此与 DSH 不同。 + +**国际化。** English 与简体中文。 + +## 开发 + +下列命令属于 standalone 仓库。在官方市场的源码包里,从市场仓库根目录执行 `pnpm install --frozen-lockfile` 和 `pnpm build`,测试用 `node --test test/*.test.mjs`。 + +```sh +npm install # esbuild + MCP SDK +npm run build # dist/server.mjs, dist/worker.mjs, dist/context.html +npm run watch # 文件变化后重建,并同步已安装的开发插件 +npm run register # 构建、打包、注册并启用本地插件 +npm test # domain 测试 +npm run check # manifest、构建产物、语法与环境检查 +npm run smoke # 本地真实数据库 smoke +npm run mcp-smoke # stdio MCP 握手、工具、会话绑定、洞察 +npm run preview # 基于真实只读服务的浏览器预览 +npm run test-host # MCP Apps AppBridge + iframe 握手 +npm run package # 打包插件 + 本地市场 +``` + +`npm run preview` 在 `127.0.0.1:4180` 提供构建后的面板,使用真实本地数据;可加 `?theme=dark` 或 `?lang=en`。`npm run test-host` 通过真实的 `@modelcontextprotocol/ext-apps` AppBridge 在 `127.0.0.1:4190` 提供同一面板。 + +watch 细节:只改 UI 时,关闭再重新打开上下文面板即可(面板打开时会重新读取 MCP 资源)。改动服务端或 Worker 后需要重启 ZCode,因为运行中的 MCP 进程会保留旧模块图。 + +关键路径: + +```text +src/server.mjs MCP stdio 服务与会话绑定 +src/worker.mjs 只读 SQLite Worker +src/service.mjs 带缓存的会话视图、聚合与载荷裁剪 +src/data/db.mjs 容忍 Schema 差异的有界 SQL +src/data/rollout.mjs 模型 I/O full/delta/tail 读取 +src/domain/compose.mjs 组成、趋势、差异、简述、压缩切分 +src/domain/items.mjs 条目提取与 Token 估算 +src/domain/events.mjs 注入、压缩、模型切换、回退 +src/domain/files.mjs 文件操作与聚合 +src/domain/detail.mjs 条目与被摘要消息内容 +ui/app.mjs MCP App UI +ui/styles.css 卡片/图表视觉系统 +``` + +## 隐私 + +- 只读本地 ZCode 数据:`~/.zcode/cli/db/db.sqlite` 及其 WAL、`rollout/`、`debug/`、`log/`,以及 `~/.zcode/v2/provider_config.json` 中的模型规则和 `~/.zcode/v2/setting.json` 中的保留开关。 +- SQLite 以 `readOnly` 打开并设置 `PRAGMA query_only`;没有迁移、写入或锁。 +- 无网络、无遥测、无模型调用。HTML 资源的 CSP 允许列表为空。 +- 完整工具输出按单个元素逐次读取并分块;产出结果的工具都控制在 ZCode 的 64 KiB `structuredContent` 预算内,大内容使用分页。 + +## 兼容性 + +- ZCode Desktop **3.15.1+**;在 **3.15.3** 上验证。 +- Node.js **24+**(`node:sqlite`、Worker Threads)。 +- 测试平台、命令、覆盖范围与已知限制见 [docs/verification.md](docs/verification.md)。 + +## 喜欢它? + +如果 `zcode-context-insight` 帮你看清了 Agent 携带的上下文,欢迎在 [GitHub](https://github.com/bowenliang123/zcode-context-insight) 点一个 ⭐。也欢迎 Issue 与 PR。 + +## 许可 + +[Apache-2.0](LICENSE)。功能与交互设计改编自 [dsh-context](https://github.com/bowenliang123/dsh-context);模型元数据与标价来自 [models.dev](https://models.dev)。 diff --git a/external_plugins/zcode-context-insight/commands/context.md b/external_plugins/zcode-context-insight/commands/context.md new file mode 100644 index 0000000..0336d66 --- /dev/null +++ b/external_plugins/zcode-context-insight/commands/context.md @@ -0,0 +1,27 @@ +--- +description: Show what this session's context window currently carries, what changed, and its recent context events. +argument-hint: "[optional focus, e.g. tool results or compactions]" +--- + +Use the installed `zcode-context-insight` plugin to inspect this session's context. Call its read-only tool +`get_context_report` (namespaced as `mcp__context__get_context_report`) exactly once. The host +injects the current session identity; do not pass a session id. + +Then answer the user directly with: + +1. The current prompt size, the model's context window and the occupancy percentage. +2. A compact composition breakdown (system prompt, tool schemas, user messages, injected context, + skills, assistant replies, tool results). Name the largest two categories and what they mean. +3. Session counts (turns, steps, tool calls, cache-hit rate) and the estimated cost when available. +4. The most relevant recent context events (injections, compactions, model switches). +5. Any coverage caveat from the report (for example, complete model-I/O retention is off), in one + sentence rather than a lecture. + +If the user asked for a specific focus, emphasize that part: +- $ARGUMENTS + +Keep the answer to a few short paragraphs or a compact list. Do not invent figures the report does +not contain. For the interactive breakdown, trend, request browser, file activity and agent fleet, +tell the user to open the **Context** panel from the session's right-side panel switcher (the panel +is read-only and offline). If `get_context_report` is unavailable, say that the zcode-context-insight plugin +is not installed or enabled and do not guess at the context contents. diff --git a/external_plugins/zcode-context-insight/docs/images/context-browser.png b/external_plugins/zcode-context-insight/docs/images/context-browser.png new file mode 100644 index 0000000..9cffa1a Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/context-browser.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/context-dna.png b/external_plugins/zcode-context-insight/docs/images/context-dna.png new file mode 100644 index 0000000..2985bce Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/context-dna.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/context-overview.png b/external_plugins/zcode-context-insight/docs/images/context-overview.png new file mode 100644 index 0000000..5b9dad6 Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/context-overview.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/context-panel.png b/external_plugins/zcode-context-insight/docs/images/context-panel.png new file mode 100644 index 0000000..1883f4b Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/context-panel.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/file-activity.png b/external_plugins/zcode-context-insight/docs/images/file-activity.png new file mode 100644 index 0000000..9f298c1 Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/file-activity.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/fleet.png b/external_plugins/zcode-context-insight/docs/images/fleet.png new file mode 100644 index 0000000..e8e923e Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/fleet.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/insights.png b/external_plugins/zcode-context-insight/docs/images/insights.png new file mode 100644 index 0000000..d0eb8b4 Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/insights.png differ diff --git a/external_plugins/zcode-context-insight/docs/images/settings.png b/external_plugins/zcode-context-insight/docs/images/settings.png new file mode 100644 index 0000000..4d19230 Binary files /dev/null and b/external_plugins/zcode-context-insight/docs/images/settings.png differ diff --git a/external_plugins/zcode-context-insight/skills/zcode-context-insight/SKILL.md b/external_plugins/zcode-context-insight/skills/zcode-context-insight/SKILL.md new file mode 100644 index 0000000..cb553cf --- /dev/null +++ b/external_plugins/zcode-context-insight/skills/zcode-context-insight/SKILL.md @@ -0,0 +1,54 @@ +--- +name: zcode-context-insight +description: Use when the user asks what is in the context window, why the context is large, which tool results or injected reminders are consuming tokens, what a compaction removed, how much a session cost, or how the agent family is doing in ZCode. Explains and operates the zcode-context-insight panel/tool. +--- + +# zcode-context-insight + +`zcode-context-insight` is a read-only local plugin that explains what a ZCode session sends to the model. +It never edits the session, never calls a model and never uses the network. + +## Tool + +The plugin exposes `get_context_report` (namespaced `mcp__context__get_context_report`) to the model. +Call it once for the current session when the user asks about context size or composition. The host +supplies the session identity; never pass or invent a session id. The report contains: + +- current prompt tokens, context window and occupancy; +- category composition: system prompt, tool schemas, user messages, injected context, skills, + assistant replies, tool results; +- turns, steps, tool calls, cache-hit rate and estimated cost; +- recent injections, compactions and model switches; +- a coverage warning when complete Model I/O retention is off. + +If the tool is unavailable, the plugin is not installed or enabled. Do not guess the figures. + +## Panel + +The interactive surface is the **Context** panel, opened from the session's right-side panel +switcher (the `+` control → **Context**). It has three views: + +- **Context**: current composition, per-request trend, request browser, context events and file + activity. Selecting a trend bar pins that request; the browser shows what it carried and can + compare it with the previous step or turn. +- **Fleet**: the current agent, its parents and every subagent, with billed tokens, estimated cost + and context occupancy. The panel host does not expose session switching, so this view is + informational. +- **Insights**: cross-session usage, a 7-day chart, an 8-week heatmap, token mix, aggregate + composition and session cards. + +## How to interpret it + +- Category figures are heuristic estimates anchored to the provider-reported prompt total; the + total and output count are exact. Context window occupancy uses the provider-configured window + when available, then the bundled models.dev catalog, then the user's override. +- An **injected** item was added by the runtime, not written by the user: reminders, agent listings, + background-task notices, skill loads or a compaction summary. +- A **compaction** replaces older messages with a summary. Its detail lists the summarized messages + when they are still on the active branch. +- File activity is derived from Read/Write/Edit metadata; shell-derived operations are marked as + estimates. +- If **Keep complete model I/O** is off in ZCode Settings → General, older request headers are + approximated from the nearest recorded request. Message composition is still reconstructed from + the complete session store. Enabling the setting only affects future requests; discarded records + cannot be recovered. diff --git a/marketplace.json b/marketplace.json index 89851d1..18dacca 100644 --- a/marketplace.json +++ b/marketplace.json @@ -1163,6 +1163,35 @@ "mcp" ] }, + { + "name": "zcode-context-insight", + "source": "./external_plugins/zcode-context-insight", + "description": "See what every model request carries: context composition, per-step trend, full request browser, injections and compactions, file activity, the agent fleet, and cross-session insights — read-only and offline.", + "description_i18n": { + "en": "See what every model request carries: context composition, per-step trend, full request browser, injections and compactions, file activity, the agent fleet, and cross-session insights — read-only and offline.", + "zh-CN": "查看每次模型请求到底带了什么:上下文组成、逐请求趋势、完整请求浏览器、注入与压缩事件、文件活动、Agent 编队以及跨会话洞察——只读、离线。" + }, + "homepage": "https://github.com/bowenliang123/zcode-context-insight", + "version": "0.1.0", + "author": { + "name": "bowenliang123", + "url": "https://github.com/bowenliang123" + }, + "category": "developer-tools", + "icon": "https://cdn-zcode.z.ai/zcode/official-plugin/assets/zcode-context-insight/icon.png", + "displayName": "ZCode Context Insight", + "displayName_i18n": { + "zh-CN": "ZCode 上下文洞察" + }, + "keywords": [ + "context", + "tokens", + "usage", + "session", + "mcp", + "insights" + ] + }, { "name": "jupyter-notebook", "icon": "https://cdn-zcode.z.ai/zcode/official-plugin/assets/jupyter-notebook/icon.png", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad31b29..a2f5991 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,6 +287,22 @@ importers: specifier: 0.28.2 version: 0.28.2 + ui-plugins/zcode-context-insight: + dependencies: + '@modelcontextprotocol/sdk': + specifier: 1.29.0 + version: 1.29.0(zod@4.4.3) + zod: + specifier: 4.4.3 + version: 4.4.3 + devDependencies: + '@modelcontextprotocol/ext-apps': + specifier: 2.0.0 + version: 2.0.0(@modelcontextprotocol/client@2.2.0)(@modelcontextprotocol/core@2.2.0)(@modelcontextprotocol/server@2.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.4.3) + esbuild: + specifier: ^0.25.0 + version: 0.25.12 + ui-plugins/zotero: dependencies: '@modelcontextprotocol/sdk': diff --git a/ui-plugins/zcode-context-insight/LICENSE b/ui-plugins/zcode-context-insight/LICENSE new file mode 100644 index 0000000..5debdb3 --- /dev/null +++ b/ui-plugins/zcode-context-insight/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 bowenliang123 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ui-plugins/zcode-context-insight/package.json b/ui-plugins/zcode-context-insight/package.json new file mode 100644 index 0000000..1700ebe --- /dev/null +++ b/ui-plugins/zcode-context-insight/package.json @@ -0,0 +1,27 @@ +{ + "name": "zcode-context-insight", + "version": "0.1.0", + "private": true, + "type": "module", + "license": "Apache-2.0", + "description": "See what every model request carries: context composition, per-step trend, full request browser, injections and compactions, file activity, the agent fleet, and cross-session insights — read-only and offline.", + "repository": { + "type": "git", + "url": "https://github.com/bowenliang123/zcode-context-insight" + }, + "engines": { + "node": ">=24.0.0" + }, + "scripts": { + "build": "node scripts/build.mjs", + "test": "node --test test/*.test.mjs" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "1.29.0", + "zod": "4.4.3" + }, + "devDependencies": { + "@modelcontextprotocol/ext-apps": "2.0.0", + "esbuild": "^0.25.0" + } +} diff --git a/ui-plugins/zcode-context-insight/scripts/build.mjs b/ui-plugins/zcode-context-insight/scripts/build.mjs new file mode 100644 index 0000000..b5f57ff --- /dev/null +++ b/ui-plugins/zcode-context-insight/scripts/build.mjs @@ -0,0 +1,3 @@ +import { buildAll } from './lib/build.mjs' + +await buildAll() diff --git a/ui-plugins/zcode-context-insight/scripts/lib/build.mjs b/ui-plugins/zcode-context-insight/scripts/lib/build.mjs new file mode 100644 index 0000000..2d1814b --- /dev/null +++ b/ui-plugins/zcode-context-insight/scripts/lib/build.mjs @@ -0,0 +1,140 @@ +import { build } from 'esbuild' +import { cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { basename, dirname, join, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { homedir } from 'node:os' + +export const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..', '..') + +async function writeThirdPartyNotices(dist, metafiles) { + const packages = new Map() + for (const metafile of metafiles) { + for (const input of Object.keys(metafile.inputs)) { + if (!input.includes('node_modules/')) continue + let directory = dirname(resolve(input)) + while (directory !== dirname(directory)) { + try { + const metadata = JSON.parse(await readFile(join(directory, 'package.json'), 'utf8')) + if (metadata.name && metadata.version) { + packages.set(directory, metadata) + break + } + } catch {} + directory = dirname(directory) + } + } + } + let notices = 'zcode-context-insight — bundled dependency notices\n\n' + for (const [directory, metadata] of [...packages.entries()].sort((a, b) => + a[1].name.localeCompare(b[1].name), + )) { + let license = '' + for (const name of ['LICENSE', 'LICENSE.md', 'LICENSE.txt', 'LICENSE-MIT', 'license', 'license.md']) { + try { + license = await readFile(join(directory, name), 'utf8') + break + } catch {} + } + if (!license) throw new Error('Missing bundled dependency license: ' + metadata.name) + notices += '===== ' + metadata.name + ' ' + metadata.version + ' =====\n' + license + '\n\n' + try { + notices += await readFile(join(directory, 'NOTICE'), 'utf8') + notices += '\n\n' + } catch {} + } + await writeFile(join(dist, 'THIRD_PARTY_NOTICES.txt'), notices, 'utf8') +} + +export async function buildAll({ quiet = false } = {}) { + const dist = join(ROOT, 'dist') + await rm(dist, { recursive: true, force: true }) + await mkdir(dist, { recursive: true }) + const logLevel = quiet ? 'silent' : 'info' + + const serverBuild = await build({ + entryPoints: [join(ROOT, 'src/server.mjs')], + outfile: join(dist, 'server.mjs'), + bundle: true, + platform: 'node', + format: 'esm', + target: 'node24', + sourcemap: false, + legalComments: 'none', + metafile: true, + logLevel, + }) + const workerBuild = await build({ + entryPoints: [join(ROOT, 'src/worker.mjs')], + outfile: join(dist, 'worker.mjs'), + bundle: true, + platform: 'node', + format: 'esm', + target: 'node24', + sourcemap: false, + legalComments: 'none', + metafile: true, + logLevel, + }) + const bundle = await build({ + entryPoints: [join(ROOT, 'ui/app.mjs')], + bundle: true, + platform: 'browser', + format: 'iife', + target: 'chrome120', + write: false, + minify: true, + charset: 'utf8', + legalComments: 'none', + loader: { '.svg': 'text' }, + metafile: true, + logLevel, + }) + const app = bundle.outputFiles[0].text.replace(/<\/script/gi, '<\\/script') + const css = await readFile(join(ROOT, 'ui/styles.css'), 'utf8') + const template = await readFile(join(ROOT, 'ui/index.html'), 'utf8') + const html = template + .replace('/*__STYLE__*/', () => css.replace(/<\/style/gi, '<\\/style')) + .replace('/*__APP__*/', () => app) + await writeFile(join(dist, 'context.html'), html, 'utf8') + await writeThirdPartyNotices(dist, [serverBuild.metafile, workerBuild.metafile, bundle.metafile]) + + // In the marketplace layout the manifest lives in the install directory, not + // next to the build source; the host build passes that directory explicitly. + const installDir = process.env.ZCODE_PLUGIN_INSTALL_DIR?.trim() + const manifestPath = installDir + ? join(installDir, '.zcode-plugin/plugin.json') + : join(ROOT, '.zcode-plugin/plugin.json') + const manifest = JSON.parse(await readFile(manifestPath, 'utf8')) + await writeFile( + join(dist, 'build.json'), + JSON.stringify({ name: manifest.name, version: manifest.version, builtAt: new Date().toISOString() }, null, 2), + ) + if (!quiet) console.log(`built ${manifest.name}@${manifest.version}: dist/server.mjs, dist/worker.mjs, dist/context.html`) + return manifest +} + +/** Copy the freshly built runtime into the dev plugin's installed cache, when present. */ +export async function syncInstalled() { + const configured = process.env.ZCODE_STORAGE_DIR?.trim() + const storage = configured || join(homedir(), '.zcode') + const cliRoot = basename(storage) === 'cli' ? storage : join(storage, 'cli') + const installed = join(cliRoot, 'plugins', 'installed_plugins.json') + if (!existsSync(installed)) return null + let parsed + try { + parsed = JSON.parse(await readFile(installed, 'utf8')) + } catch { + return null + } + const entry = parsed?.plugins?.find( + (plugin) => plugin.name === 'zcode-context-insight' && plugin.marketplace === 'dev-zcode-context-insight', + ) + if (!entry?.installPath || !existsSync(entry.installPath)) return null + const target = join(entry.installPath, 'dist') + await mkdir(target, { recursive: true }) + for (const file of ['server.mjs', 'worker.mjs', 'context.html', 'build.json', 'THIRD_PARTY_NOTICES.txt']) { + await cp(join(ROOT, 'dist', file), join(target, file)) + } + return entry.installPath +} diff --git a/ui-plugins/zcode-context-insight/src/data/db.mjs b/ui-plugins/zcode-context-insight/src/data/db.mjs new file mode 100644 index 0000000..a48bc2a --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/data/db.mjs @@ -0,0 +1,588 @@ +/** + * Read-only SQLite access to ZCode's local session store. + * + * Design rules: + * - Never open the app's own store class; use `node:sqlite` with `query_only`. + * - Never select whole `part.data` for a session listing: tool outputs can be megabytes. Only the + * fields a view needs plus bounded prefixes cross into JavaScript; full bodies are read on demand + * for one element at a time. + * - A missing or unsupported schema raises a typed ContextError, never a stack trace to the panel. + */ + +import { DatabaseSync } from 'node:sqlite' +import { readFileSync, statSync } from 'node:fs' +import { ContextError } from '../domain/errors.mjs' + +const AGENT_SQL = "('main_turn','subagent','workflow_child')" + +export function classifyDbError(error) { + if (error instanceof ContextError) return error.code + const message = String(error?.message ?? error) + if (/no such table|no such column/i.test(message)) return 'schema_unsupported' + if (/database is locked|SQLITE_BUSY/i.test(message)) return 'database_busy' + if (/unable to open|ENOENT|not a database/i.test(message)) return 'database_unavailable' + return 'read_failed' +} + +export function openDatabase(dbPath) { + let stat + try { + stat = statSync(dbPath) + } catch { + throw new ContextError('database_missing', 'ZCode session database was not found.') + } + if (!stat.isFile()) throw new ContextError('database_missing', 'Session database path is not a file.') + let db + try { + db = new DatabaseSync(dbPath, { readOnly: true }) + db.exec('PRAGMA query_only = ON; PRAGMA busy_timeout = 250;') + const tables = new Set( + db + .prepare("SELECT name FROM sqlite_master WHERE type='table'") + .all() + .map((row) => row.name), + ) + if (!tables.has('session') || !tables.has('message') || !tables.has('part') || !tables.has('model_usage')) { + throw new ContextError('schema_unsupported', 'This database does not expose the supported session tables.') + } + return db + } catch (error) { + try { + db?.close() + } catch {} + throw new ContextError(classifyDbError(error), 'The ZCode session database could not be read.') + } +} + +function tableColumns(db, table) { + try { + return new Set(db.prepare('PRAGMA table_info(' + table + ')').all().map((row) => row.name)) + } catch { + return new Set() + } +} + +export function readSessionRow(db, sessionId) { + const row = db.prepare('SELECT * FROM session WHERE id = ?').get(sessionId) + if (!row) throw new ContextError('session_missing', 'This session is not in the local ZCode store.') + return row +} + +export function readUsageRows(db, sessionId) { + return db + .prepare( + `SELECT logical_request_id, attempt_index, assistant_message_id, parent_user_message_id, turn_id, + query_source, provider_id, model_id, variant, agent, mode, task_type, status, + started_at, first_token_at, completed_at, duration_ms, time_to_first_token_ms, + finish_reason, tool_call_count, input_tokens, output_tokens, reasoning_tokens, + cache_creation_input_tokens, cache_read_input_tokens, provider_total_tokens, + computed_total_tokens, retry_count, cancelled_by_user, context_exceeded, + error_type, error_code + FROM model_usage WHERE session_id = ? + ORDER BY started_at, attempt_index, logical_request_id`, + ) + .all(sessionId) +} + +export function readToolRows(db, sessionId) { + return db + .prepare( + `SELECT tool_call_id, tool_name, status, started_at, first_output_at, completed_at, duration_ms, + time_to_first_output_ms, output_bytes, truncated, error_type + FROM tool_usage WHERE session_id = ? ORDER BY started_at`, + ) + .all(sessionId) +} + +export function readTurnRows(db, sessionId) { + return db + .prepare( + `SELECT turn_id, user_message_id, status, started_at, first_model_start_at, first_token_at, + completed_at, duration_ms, time_to_first_token_ms, model_request_count, model_retry_count, + tool_call_count, tool_error_count, input_tokens, output_tokens, reasoning_tokens, + cache_creation_input_tokens, cache_read_input_tokens, computed_total_tokens + FROM turn_usage WHERE session_id = ? ORDER BY started_at`, + ) + .all(sessionId) +} + +const lineCountSql = (field) => + `CASE WHEN ${field} IS NULL THEN NULL WHEN length(${field}) = 0 THEN 0 ` + + `ELSE length(${field}) - length(replace(${field}, char(10), '')) + ` + + `CASE WHEN substr(${field}, -1, 1) = char(10) THEN 0 ELSE 1 END END` + +const partField = (path) => `json_extract(p.data, '${path}')` + +/** + * Read the whole conversation with bounded fields. `parts` keeps only what the overview, browser + * previews, file activity and event extraction need; full bodies are fetched by part id. + */ +export function readConversation(db, sessionId) { + const partColumns = tableColumns(db, 'part') + const messageColumns = tableColumns(db, 'message') + const sequence = messageColumns.has('sequence') ? 'm.sequence' : 'NULL' + const partSequence = partColumns.has('sequence') ? 'p.sequence' : 'NULL' + + const messages = db + .prepare( + `SELECT m.id, ${sequence} AS sequence, m.time_created, m.time_updated, + json_extract(m.data,'$.role') AS role, + json_extract(m.data,'$.semantics.kind') AS kind, + json_extract(m.data,'$.semantics.origin') AS origin, + json_extract(m.data,'$.semantics.source') AS source, + json_extract(m.data,'$.semantics.providerVisibility') AS visibility, + json_extract(m.data,'$.semantics.uiVisibility') AS ui_visibility, + json_extract(m.data,'$.synthetic') AS synthetic, + json_extract(m.data,'$.summary.title') AS summary_title, + length(json_extract(m.data,'$.summary.body')) AS summary_chars, + substr(json_extract(m.data,'$.summary.body'), 1, 6000) AS summary_preview, + json_extract(m.data,'$.tokens.input') AS tokens_input, + json_extract(m.data,'$.tokens.output') AS tokens_output, + json_extract(m.data,'$.tokens.cache.read') AS cache_read, + json_extract(m.data,'$.tokens.cache.write') AS cache_write, + json_extract(m.data,'$.modelSelection.providerId') AS model_provider, + json_extract(m.data,'$.modelSelection.modelId') AS model_id, + json_extract(m.data,'$.model.providerID') AS model_provider_alt, + json_extract(m.data,'$.model.modelID') AS model_id_alt, + json_extract(m.data,'$.anchor.turnId') AS turn_id, + json_extract(m.data,'$.metadata.source') AS metadata_source, + json_extract(m.data,'$.time.completed') AS completed_at, + substr(m.data, 1, 4000) AS data_preview + FROM message m WHERE m.session_id = ? ORDER BY ${sequence}, m.time_created, m.id`, + ) + .all(sessionId) + + const parts = db + .prepare( + `SELECT p.id, p.message_id, ${partSequence} AS sequence, p.time_created, p.time_updated, + ${partField('$.type')} AS type, + ${partField('$.tool')} AS tool, + ${partField('$.callID')} AS call_id, + ${partField('$.state.status')} AS status, + ${partField('$.state.time.start')} AS tool_start, + ${partField('$.state.time.end')} AS tool_end, + length(${partField('$.text')}) AS text_chars, + substr(${partField('$.text')}, 1, 600) AS text_preview, + length(${partField('$.state.input')}) AS input_chars, + substr(${partField('$.state.input')}, 1, 400) AS input_sample, + length(${partField('$.state.output')}) AS output_chars, + substr(${partField('$.state.output')}, 1, 800) AS output_preview, + ${lineCountSql(partField('$.state.output'))} AS output_lines, + ${lineCountSql(partField('$.state.input.content'))} AS write_lines, + ${lineCountSql(partField('$.state.input.old_string'))} AS edit_old_lines, + ${lineCountSql(partField('$.state.input.new_string'))} AS edit_new_lines, + ${partField('$.state.input.file_path')} AS file_path, + ${partField('$.state.input.path')} AS input_path, + ${partField('$.state.input.pattern')} AS pattern, + ${partField('$.state.input.command')} AS command, + ${partField('$.state.input.skill')} AS skill, + ${partField('$.state.input.description')} AS description, + ${partField('$.state.input.query')} AS query, + ${partField('$.state.input.url')} AS url, + ${partField('$.state.input.prompt')} AS prompt, + ${partField('$.state.input.name')} AS input_name, + ${partField('$.metadata.display.additions')} AS additions, + ${partField('$.metadata.display.deletions')} AS deletions, + ${partField('$.metadata.readFileState.path')} AS read_path, + ${partField('$.metadata.readFileState.offset')} AS read_offset, + ${partField('$.metadata.readFileState.isPartialView')} AS read_partial, + ${partField('$.metadata.readFileState.sizeBytes')} AS read_size, + ${partField('$.metadata.serialization.originalBytes')} AS original_bytes, + ${partField('$.mime')} AS mime, + ${partField('$.metadata.image.width')} AS image_width, + ${partField('$.metadata.image.height')} AS image_height, + ${partField('$.metadata.image.originalWidth')} AS image_ow, + ${partField('$.metadata.image.originalHeight')} AS image_oh, + ${partField('$.metadata.image.transformedSizeBytes')} AS image_bytes, + ${partField('$.timelineType')} AS timeline_type, + substr(p.data, 1, 7000) AS raw_preview + FROM part p JOIN message m ON m.id = p.message_id + WHERE p.session_id = ? + ORDER BY ${sequence}, ${partSequence}, p.time_created, p.id`, + ) + .all(sessionId) + + const messageMap = new Map(messages.map((message) => [message.id, message])) + const byMessage = new Map() + for (const part of parts) { + if (!messageMap.has(part.message_id)) continue + const list = byMessage.get(part.message_id) ?? [] + list.push(part) + byMessage.set(part.message_id, list) + } + + return { + messages, + parts, + messageMap, + byMessage, + branch: activeBranchSequences(db, sessionId), + } +} + +/** + * Follow ZCode's active conversation branch after a rewind. A rewind deletes nothing; the abandoned + * messages stay in the store and `session.revert` records which prefix/branch is live. + */ +function activeBranchSequences(db, sessionId) { + if (!tableColumns(db, 'session').has('revert')) return null + let raw + try { + raw = db.prepare('SELECT revert FROM session WHERE id = ?').get(sessionId)?.revert + } catch { + return null + } + if (raw == null) return null + let revert + try { + revert = typeof raw === 'string' ? JSON.parse(raw) : raw + } catch { + throw new ContextError('branch_unknown', 'The rewind state of this session is unreadable.') + } + if (!revert?.targetMessageID) return null + const rows = db + .prepare('SELECT id, sequence FROM message WHERE session_id = ? ORDER BY sequence, time_created, id') + .all(sessionId) + const index = (id) => rows.findIndex((row) => row.id === id) + const target = index(revert.targetMessageID) + const keptIds = Array.isArray(revert.keptMessageIDs) ? new Set(revert.keptMessageIDs) : null + if (!keptIds && target < 0) return null + const kept = keptIds ? rows.filter((row) => keptIds.has(row.id)) : rows.slice(0, target) + const cut = revert.branchCutAfterMessageID ? index(revert.branchCutAfterMessageID) : -1 + const created = revert.createdMessageID ? index(revert.createdMessageID) : -1 + const from = revert.branchCutAfterMessageID ? (cut < 0 ? rows.length : cut + 1) : created < 0 ? rows.length : created + return new Set([...kept, ...rows.slice(from)].map((row) => row.sequence)) +} + +export function readFullPart(db, sessionId, partId) { + const row = db + .prepare('SELECT id, message_id, time_created, time_updated, data FROM part WHERE session_id = ? AND id = ?') + .get(sessionId, partId) + if (!row) throw new ContextError('element_missing', 'That context element is no longer in the session store.') + let data + try { + data = JSON.parse(row.data) + } catch { + data = null + } + return { ...row, data } +} + +export function readFullMessage(db, sessionId, messageId) { + const row = db + .prepare('SELECT id, time_created, time_updated, data FROM message WHERE session_id = ? AND id = ?') + .get(sessionId, messageId) + if (!row) throw new ContextError('element_missing', 'That message is no longer in the session store.') + let data + try { + data = JSON.parse(row.data) + } catch { + data = null + } + return { ...row, data } +} + +/** Messages a compaction summarized, on the active branch, with the fields the drill-down needs. */ +export function readSummarizedMessages(db, sessionId, { after = -1, through, summary = null } = {}) { + if (!Number.isFinite(through)) throw new ContextError('event_incomplete', 'This compaction has no summarized boundary.') + const active = activeBranchSequences(db, sessionId) + const live = (sequence) => active === null || active.has(sequence) + if (!live(through) || (summary != null && !live(summary))) { + throw new ContextError('rewound_branch', 'This compaction is no longer on the active branch.') + } + const boundaries = db + .prepare('SELECT id, sequence FROM message WHERE session_id = ? AND sequence > ? AND sequence <= ? ORDER BY sequence') + .all(sessionId, Number.isFinite(after) ? after : -1, through) + .filter((row) => live(row.sequence)) + if (boundaries.length === 0) return { messages: [], total: 0, available: true } + const capped = boundaries.slice(0, 500) + const messageStmt = db.prepare( + `SELECT m.id, m.sequence, m.time_created, m.time_updated, + json_extract(m.data,'$.role') AS role, + json_extract(m.data,'$.semantics.kind') AS kind, + json_extract(m.data,'$.semantics.origin') AS origin, + json_extract(m.data,'$.semantics.source') AS source, + json_extract(m.data,'$.semantics.providerVisibility') AS visibility, + json_extract(m.data,'$.synthetic') AS synthetic, + substr(json_extract(m.data,'$.summary.body'), 1, 4000) AS summary_preview + FROM message m WHERE m.session_id = ? AND m.id = ?`, + ) + const partStmt = db.prepare( + `SELECT p.id, p.message_id, p.time_created, + ${partField('$.type')} AS type, + ${partField('$.tool')} AS tool, + ${partField('$.callID')} AS call_id, + ${partField('$.state.status')} AS status, + length(${partField('$.text')}) AS text_chars, + substr(${partField('$.text')}, 1, 1200) AS text_preview, + length(${partField('$.state.input')}) AS input_chars, + substr(${partField('$.state.input')}, 1, 400) AS input_sample, + length(${partField('$.state.output')}) AS output_chars, + substr(${partField('$.state.output')}, 1, 400) AS output_preview, + ${partField('$.state.input.description')} AS description, + ${partField('$.state.input.command')} AS command, + ${partField('$.state.input.file_path')} AS file_path, + ${partField('$.state.input.skill')} AS skill + FROM part p WHERE p.session_id = ? AND p.message_id = ? ORDER BY p.time_created, p.id`, + ) + const messages = capped + .map((boundary) => { + const message = messageStmt.get(sessionId, boundary.id) + if (!message) return null + return { ...message, parts: partStmt.all(sessionId, boundary.id) } + }) + .filter(Boolean) + return { messages, total: boundaries.length, available: true, truncated: boundaries.length > capped.length } +} + +/** Per-session aggregate over agent requests in a time range (cross-session insights). */ +export function readInsights(db, { since, limit = 500 } = {}) { + const cutoff = Number.isFinite(since) ? since : Date.now() - 30 * 86_400_000 + const perModel = db + .prepare( + `SELECT session_id, provider_id, model_id, + COUNT(*) AS calls, + SUM(input_tokens) AS input_tokens, + SUM(output_tokens) AS output_tokens, + SUM(cache_read_input_tokens) AS cache_read, + SUM(cache_creation_input_tokens) AS cache_write, + MIN(started_at) AS first_at, + MAX(COALESCE(completed_at, started_at)) AS last_at + FROM model_usage + WHERE started_at >= ? AND query_source IN ${AGENT_SQL} + GROUP BY session_id, provider_id, model_id + ORDER BY last_at DESC`, + ) + .all(cutoff) + const daily = db + .prepare( + `SELECT session_id, + date(started_at / 1000, 'unixepoch', 'localtime') AS day, + SUM(input_tokens) AS input_tokens, + SUM(output_tokens) AS output_tokens, + SUM(cache_read_input_tokens) AS cache_read, + SUM(cache_creation_input_tokens) AS cache_write, + COUNT(*) AS calls + FROM model_usage + WHERE started_at >= ? AND query_source IN ${AGENT_SQL} + GROUP BY session_id, day + ORDER BY day`, + ) + .all(cutoff) + const latest = db + .prepare( + `SELECT * FROM ( + SELECT session_id, provider_id, model_id, input_tokens, output_tokens, + cache_read_input_tokens, cache_creation_input_tokens, started_at, completed_at, + duration_ms, time_to_first_token_ms, turn_id, status, + ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY started_at DESC) AS rn + FROM model_usage + WHERE started_at >= ? AND query_source IN ${AGENT_SQL} + ) WHERE rn = 1`, + ) + .all(cutoff) + const ids = [...new Set(perModel.map((row) => row.session_id))].slice(0, limit) + const idSet = new Set(ids) + const placeholders = ids.map(() => '?').join(',') || 'NULL' + const sessions = ids.length + ? db + .prepare( + `SELECT id, parent_id, title, directory, project_id, task_type, time_created, time_updated, + time_archived, title_source + FROM session WHERE id IN (${placeholders})`, + ) + .all(...ids) + : [] + return { + since: cutoff, + perModel: perModel.filter((row) => idSet.has(row.session_id)), + daily: daily.filter((row) => idSet.has(row.session_id)), + latest: latest.filter((row) => idSet.has(row.session_id)), + sessions, + truncated: new Set(perModel.map((row) => row.session_id)).size > ids.length, + } +} + +/** The current session, its ancestor chain, and its/its family's descendants. */ +export function readFleetSessions(db, sessionId, { maxNodes = 80 } = {}) { + const current = db.prepare('SELECT * FROM session WHERE id = ?').get(sessionId) + if (!current) return { sessions: [], truncated: false, currentId: sessionId } + const byId = new Map([[current.id, current]]) + let cursor = current + for (let depth = 0; depth < 12 && cursor?.parent_id; depth++) { + const parent = db.prepare('SELECT * FROM session WHERE id = ?').get(cursor.parent_id) + if (!parent || byId.has(parent.id)) break + byId.set(parent.id, parent) + cursor = parent + } + const roots = [...byId.values()].filter((row) => !row.parent_id || !byId.has(row.parent_id)) + const queue = roots.length > 0 ? [...roots] : [current] + const seen = new Set([...byId.keys()]) + let truncated = false + while (queue.length > 0) { + if (byId.size >= maxNodes) { + truncated = true + break + } + const node = queue.shift() + const children = db + .prepare('SELECT * FROM session WHERE parent_id = ? ORDER BY time_created, id LIMIT ?') + .all(node.id, Math.max(1, maxNodes - byId.size)) + for (const child of children) { + if (seen.has(child.id)) continue + seen.add(child.id) + byId.set(child.id, child) + queue.push(child) + } + } + return { sessions: [...byId.values()], truncated, currentId: sessionId } +} + +export function readUsageForSessions(db, sessionIds) { + if (sessionIds.length === 0) return [] + const placeholders = sessionIds.map(() => '?').join(',') + return db + .prepare( + `SELECT session_id, provider_id, model_id, COUNT(*) AS calls, + SUM(input_tokens) AS input_tokens, SUM(output_tokens) AS output_tokens, + SUM(cache_read_input_tokens) AS cache_read, + SUM(cache_creation_input_tokens) AS cache_write, + SUM(computed_total_tokens) AS total_tokens, + MIN(started_at) AS first_at, MAX(COALESCE(completed_at, started_at)) AS last_at, + COUNT(DISTINCT turn_id) AS turns + FROM model_usage WHERE session_id IN (${placeholders}) AND query_source IN ${AGENT_SQL} + GROUP BY session_id, provider_id, model_id`, + ) + .all(...sessionIds) +} + +export function readLatestUsageForSessions(db, sessionIds) { + if (sessionIds.length === 0) return [] + const placeholders = sessionIds.map(() => '?').join(',') + return db + .prepare( + `SELECT * FROM ( + SELECT session_id, provider_id, model_id, input_tokens, output_tokens, + cache_read_input_tokens, cache_creation_input_tokens, computed_total_tokens, + started_at, completed_at, duration_ms, time_to_first_token_ms, status, turn_id, + ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY started_at DESC) AS rn + FROM model_usage WHERE session_id IN (${placeholders}) AND query_source IN ${AGENT_SQL} + ) WHERE rn = 1`, + ) + .all(...sessionIds) +} + +/** First real user prompt and latest assistant text for a fleet member's detail drawer. */ +export function readSessionPreview(db, sessionId) { + const first = db + .prepare( + `SELECT m.id, m.time_created, + json_extract(m.data,'$.role') AS role, + json_extract(m.data,'$.semantics.kind') AS kind, + json_extract(m.data,'$.semantics.providerVisibility') AS visibility + FROM message m WHERE m.session_id = ? + ORDER BY m.sequence, m.time_created, m.id LIMIT 1`, + ) + .get(sessionId) + const firstText = first + ? db + .prepare( + `SELECT substr(json_extract(data,'$.text'),1,1200) AS text FROM part + WHERE message_id = ? AND json_extract(data,'$.type')='text' ORDER BY time_created, id LIMIT 1`, + ) + .get(first.id)?.text ?? '' + : '' + const last = db + .prepare( + `SELECT m.id, m.time_created FROM message m + WHERE m.session_id = ? AND json_extract(m.data,'$.role')='assistant' + AND json_extract(m.data,'$.semantics.providerVisibility')='visible' + ORDER BY m.sequence DESC, m.time_created DESC, m.id DESC LIMIT 1`, + ) + .get(sessionId) + const lastText = last + ? db + .prepare( + `SELECT substr(json_extract(data,'$.text'),1,1200) AS text FROM part + WHERE message_id = ? AND json_extract(data,'$.type')='text' + ORDER BY time_created DESC, id DESC LIMIT 1`, + ) + .get(last.id)?.text ?? '' + : '' + return { + initialPrompt: String(firstText ?? '').trim(), + lastReply: last ? { time: last.time_created, text: String(lastText ?? '').trim() } : null, + } +} + +/** Context windows configured in ZCode's own provider config (model/provider rules only). */ +export function readProviderWindows(path) { + const map = new Map() + if (!path) return map + let parsed + try { + parsed = JSON.parse(readFileSync(path, 'utf8')) + } catch { + return map + } + const rules = parsed?.config?.modelConfigRules?.providerModelRules + if (Array.isArray(rules)) { + for (const rule of rules) { + const model = String(rule?.modelId ?? '').toLowerCase() + const provider = String(rule?.providerId ?? '').toLowerCase() + const window = Number(rule?.config?.properties?.contextWindow) + if (!model || !Number.isFinite(window) || window <= 0) continue + if (provider) map.set(provider + '/' + model, window) + if (!map.has(model)) map.set(model, window) + } + } + const legacy = parsed?.config?.legacyModelConfigs + if (Array.isArray(legacy)) { + for (const rule of legacy) { + const model = String(rule?.modelId ?? rule?.id ?? '').toLowerCase() + const window = Number(rule?.contextWindow ?? rule?.properties?.contextWindow) + if (model && Number.isFinite(window) && window > 0 && !map.has(model)) map.set(model, window) + } + } + return map +} + +/** App-level "keep complete model I/O" preference; null when the setting file is unreadable. */ +export function readFullRetention(path) { + if (!path) return null + try { + const parsed = JSON.parse(readFileSync(path, 'utf8')) + return typeof parsed?.modelIoFullRetentionEnabled === 'boolean' ? parsed.modelIoFullRetentionEnabled : false + } catch { + return null + } +} + +/** Per-day, per-model billed buckets for cross-session cost bars. */ +export function readInsightsDailyModel(db, since) { + return db + .prepare( + `SELECT session_id, + date(started_at / 1000, 'unixepoch', 'localtime') AS day, + provider_id, model_id, + SUM(input_tokens) AS input_tokens, + SUM(output_tokens) AS output_tokens, + SUM(cache_read_input_tokens) AS cache_read, + SUM(cache_creation_input_tokens) AS cache_write, + COUNT(*) AS calls + FROM model_usage + WHERE started_at >= ? AND query_source IN ${AGENT_SQL} + GROUP BY session_id, day, provider_id, model_id + ORDER BY day`, + ) + .all(since) +} + +export function readChildrenSessions(db, sessionId) { + return db + .prepare( + `SELECT id, parent_id, title, directory, task_type, time_created, time_updated + FROM session WHERE parent_id = ? ORDER BY time_created, id`, + ) + .all(sessionId) +} diff --git a/ui-plugins/zcode-context-insight/src/data/paths.mjs b/ui-plugins/zcode-context-insight/src/data/paths.mjs new file mode 100644 index 0000000..7209e33 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/data/paths.mjs @@ -0,0 +1,49 @@ +import { existsSync } from 'node:fs' +import { homedir } from 'node:os' +import { join, resolve } from 'node:path' + +function env(name) { + const value = process.env[name] + return typeof value === 'string' && value.trim() !== '' ? value.trim() : '' +} + +export function homeDir() { + return env('HOME') || homedir() +} + +/** + * Resolve every local path the plugin reads. Everything is read-only; the only writable directory + * is `pluginDataDir`, used for the user's view preferences. + */ +export function resolvePaths(overrides = {}) { + const home = homeDir() + const dataRoot = resolve(overrides.dataRoot || env('ZCODE_CONTEXT_DATA_ROOT') || join(home, '.zcode', 'cli')) + const dbPath = resolve(overrides.dbPath || env('ZCODE_CONTEXT_DB_PATH') || join(dataRoot, 'db', 'db.sqlite')) + const parent = resolve(dataRoot, '..') + const settingCandidates = [ + env('ZCODE_CONTEXT_SETTING_PATH'), + join(parent, 'v2', 'setting.json'), + join(dataRoot, 'setting.json'), + join(home, '.zcode', 'v2', 'setting.json'), + ].filter(Boolean) + const providerCandidates = [ + env('ZCODE_CONTEXT_PROVIDER_CONFIG'), + join(parent, 'v2', 'provider_config.json'), + join(dataRoot, 'provider_config.json'), + join(home, '.zcode', 'v2', 'provider_config.json'), + ].filter(Boolean) + const pluginDataDir = + env('ZCODE_PLUGIN_DATA') || env('ZCODE_CONTEXT_PLUGIN_DATA') || join(home, '.zcode', 'zcode-context-insight') + return { + home, + dataRoot, + dbPath, + rolloutDirs: [join(dataRoot, 'rollout'), join(dataRoot, 'debug')], + logDir: join(dataRoot, 'log'), + settingPath: settingCandidates.find((path) => existsSync(path)) ?? settingCandidates[0], + providerConfigPath: providerCandidates.find((path) => existsSync(path)) ?? providerCandidates[0], + pluginDataDir, + priceFile: overrides.priceFile || env('ZCODE_CONTEXT_PRICE_FILE') || '', + windowOverride: Number(overrides.contextWindow ?? env('ZCODE_CONTEXT_WINDOW') ?? 0) || 0, + } +} diff --git a/ui-plugins/zcode-context-insight/src/data/preferences.mjs b/ui-plugins/zcode-context-insight/src/data/preferences.mjs new file mode 100644 index 0000000..3265b00 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/data/preferences.mjs @@ -0,0 +1,71 @@ +import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs' +import { join } from 'node:path' + +export const DEFAULT_PREFERENCES = Object.freeze({ + defaultView: 'context', + granularity: 'step', + trendMode: 'total', + deltaBase: 'step', + durationCurve: true, + fileSort: 'count', + toolSort: 'size', + currency: 'auto', + language: 'auto', + contextWindow: 0, + priceFile: '', + showEstimatedResidual: true, + compactCards: false, +}) + +const ENUMS = { + defaultView: ['context', 'fleet', 'insights'], + granularity: ['step', 'turn'], + trendMode: ['total', 'delta'], + deltaBase: ['step', 'turn'], + fileSort: ['count', 'latest', 'path', 'name', 'added'], + toolSort: ['size', 'count', 'name'], + currency: ['auto', 'usd', 'cny'], + language: ['auto', 'en', 'zh'], +} + +export function preferencesPath(paths) { + return join(paths.pluginDataDir, 'preferences.json') +} + +function normalize(input) { + const out = { ...DEFAULT_PREFERENCES } + if (!input || typeof input !== 'object') return out + for (const [key, allowed] of Object.entries(ENUMS)) { + if (typeof input[key] === 'string' && allowed.includes(input[key])) out[key] = input[key] + } + if (typeof input.durationCurve === 'boolean') out.durationCurve = input.durationCurve + if (typeof input.showEstimatedResidual === 'boolean') out.showEstimatedResidual = input.showEstimatedResidual + if (typeof input.compactCards === 'boolean') out.compactCards = input.compactCards + if (Number.isFinite(Number(input.contextWindow)) && Number(input.contextWindow) >= 0) { + out.contextWindow = Math.floor(Number(input.contextWindow)) + } + if (typeof input.priceFile === 'string') out.priceFile = input.priceFile.trim() + return out +} + +export function readPreferences(paths) { + let stored = null + try { + stored = JSON.parse(readFileSync(preferencesPath(paths), 'utf8')) + } catch {} + const prefs = normalize(stored) + if (paths.windowOverride > 0) prefs.contextWindow = paths.windowOverride + if (paths.priceFile) prefs.priceFile = paths.priceFile + return prefs +} + +export function writePreferences(paths, patch) { + const current = readPreferences(paths) + const next = normalize({ ...current, ...(patch && typeof patch === 'object' ? patch : {}) }) + mkdirSync(paths.pluginDataDir, { recursive: true }) + const file = preferencesPath(paths) + const temp = file + '.' + process.pid + '.tmp' + writeFileSync(temp, JSON.stringify(next, null, 2) + '\n', 'utf8') + renameSync(temp, file) + return next +} diff --git a/ui-plugins/zcode-context-insight/src/data/rollout.mjs b/ui-plugins/zcode-context-insight/src/data/rollout.mjs new file mode 100644 index 0000000..25ebd22 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/data/rollout.mjs @@ -0,0 +1,221 @@ +/** + * ZCode model-I/O trajectory reader. + * + * One `model-io-.jsonl` file per session, written to rollout/ (production) or debug/ + * (development). Bounded retention means records may be `full`, `delta` or `tail`; a tail is a new + * baseline and cannot be joined to older records. The panel only uses this file for the request + * header (system prompt and tool schemas) and provider-reported response usage; the message body + * always comes from the session store, which is complete. + */ + +import { open, stat } from 'node:fs/promises' +import { join } from 'node:path' +import { sanitizeSessionSegment } from '../domain/session.mjs' + +const MAX_READ_BYTES = 32 * 1024 * 1024 + +async function readTail(filePath) { + const handle = await open(filePath, 'r') + try { + const info = await handle.stat() + const start = Math.max(0, info.size - MAX_READ_BYTES) + const length = info.size - start + const buffer = Buffer.allocUnsafe(length) + let read = 0 + while (read < length) { + const result = await handle.read(buffer, read, length - read, start + read) + if (result.bytesRead === 0) break + read += result.bytesRead + } + let text = buffer.subarray(0, read).toString('utf8') + if (start > 0) { + const newline = text.indexOf('\n') + text = newline === -1 ? '' : text.slice(newline + 1) + } + return { text, bytes: info.size, truncated: start > 0, mtime: info.mtimeMs } + } finally { + await handle.close() + } +} + +function expandRequests(records) { + const expanded = [] + let previous + for (const record of records) { + const request = record?.request + if (!request || typeof request !== 'object') { + expanded.push(record) + previous = record + continue + } + const nextRequest = { ...request } + expandCollection(nextRequest, 'messages', previous?.request) + expandCollection(nextRequest, 'sdkMessages', previous?.request) + if (nextRequest.body && typeof nextRequest.body === 'object') { + const body = { ...nextRequest.body } + expandCollection(body, 'messages', previous?.request?.body, nextRequest) + nextRequest.body = body + } + const next = { ...record, request: nextRequest } + expanded.push(next) + previous = next + } + return expanded +} + +function expandCollection(target, key, previous, metadataSource = target) { + if (metadataSource?.[key + 'Kind'] === 'tail') return + if (metadataSource?.[key + 'Kind'] !== 'delta') return + const delta = target[key] + const before = previous?.[key] + const offset = metadataSource[key === 'messages' ? 'messageOffset' : key + 'Offset'] + if (!Array.isArray(delta) || !Array.isArray(before) || !Number.isInteger(offset) || offset < 0) return + target[key] = [...before.slice(0, offset), ...delta] +} + +async function candidateFiles(paths, sessionId) { + const name = `model-io-${sanitizeSessionSegment(sessionId) || 'no-session'}.jsonl` + const found = [] + for (const directory of paths.rolloutDirs ?? []) { + const file = join(directory, name) + try { + const info = await stat(file) + if (info.isFile()) found.push({ file, directory, mtime: info.mtimeMs, size: info.size }) + } catch {} + } + return found.sort((a, b) => b.mtime - a.mtime) +} + +/** Cheap change detector for the rollout cache; no file contents are read. */ +export async function rolloutStamp(paths, sessionId) { + const candidates = await candidateFiles(paths, sessionId) + if (candidates.length === 0) return 'none' + return candidates.map((candidate) => candidate.file + ':' + candidate.mtime + ':' + candidate.size).join('|') +} + +function parseRecords(text, sessionId) { + const records = [] + for (const line of text.split('\n')) { + if (!line.trim()) continue + let parsed + try { + parsed = JSON.parse(line) + } catch { + continue + } + if (parsed?.sessionId !== sessionId) continue + if (parsed.type !== undefined && parsed.type !== 'model_io') continue + records.push(parsed) + } + return records +} + +function timeOf(value) { + const parsed = Date.parse(value) + return Number.isFinite(parsed) ? parsed : 0 +} + +function usageOf(record) { + const usage = record?.response?.usage + if (!usage || typeof usage !== 'object') return null + const pick = (name) => (typeof usage[name] === 'number' && Number.isFinite(usage[name]) ? usage[name] : null) + return { + inputTokens: pick('inputTokens'), + outputTokens: pick('outputTokens'), + totalTokens: pick('totalTokens'), + cacheReadTokens: pick('cacheReadTokens'), + cacheWriteTokens: pick('cacheWriteTokens'), + } +} + +function headerOf(record) { + const body = record?.request?.body + const system = body?.system ?? record?.request?.system ?? null + const tools = Array.isArray(body?.tools) ? body.tools : null + return { + system, + tools, + maxOutputTokens: Number.isFinite(body?.max_tokens) + ? body.max_tokens + : Number.isFinite(record?.request?.maxOutputTokens) + ? record.request.maxOutputTokens + : null, + } +} + +/** + * Read the trajectory for one session. Never throws on missing files: the caller shows the + * database-derived view and marks the header as estimated. + */ +export async function readRollout(paths, sessionId) { + const candidates = await candidateFiles(paths, sessionId) + if (candidates.length === 0) { + return { available: false, records: [], coverage: 'none', files: [], truncated: false, changedAt: 0 } + } + const chosen = candidates[0] + let tail + try { + tail = await readTail(chosen.file) + } catch { + return { available: false, records: [], coverage: 'none', files: [], truncated: false, changedAt: 0 } + } + const raw = parseRecords(tail.text, sessionId) + raw.sort((a, b) => timeOf(a.startedAt) - timeOf(b.startedAt) || String(a.requestId ?? '').localeCompare(String(b.requestId ?? ''))) + const records = expandRequests(raw).map((record) => { + const startedAt = timeOf(record.startedAt) + const usage = usageOf(record) + const request = record.request ?? {} + return { + startedAt, + completedAt: timeOf(record.completedAt), + requestId: typeof record.requestId === 'string' ? record.requestId : '', + turnId: record.turnId ?? null, + querySource: record.querySource ?? null, + model: record.model ?? {}, + attempt: Number.isInteger(record.attempt) ? record.attempt : 1, + messagesKind: request.messagesKind ?? null, + messageOffset: Number.isInteger(request.messageOffset) ? request.messageOffset : null, + messageCount: Number.isInteger(request.messageCount) ? request.messageCount : null, + messages: Array.isArray(request.messages) ? request.messages : [], + header: headerOf(record), + usage, + responseText: typeof record.response?.text === 'string' ? record.response.text : '', + responseCalls: Array.isArray(record.response?.toolCalls) ? record.response.toolCalls : [], + hasError: Boolean(record.error), + } + }) + const hasFull = records.some((record) => record.messagesKind === 'full') + const hasTail = records.some((record) => record.messagesKind === 'tail') + const coverage = hasFull && !hasTail ? 'full' : records.length > 0 ? 'partial' : 'none' + return { + available: true, + records, + coverage, + files: candidates.map((candidate) => candidate.file), + file: chosen.file, + truncated: tail.truncated, + changedAt: chosen.mtime, + } +} + +/** The rollout record for a request, matched by turn id and start instant (never by message text). */ +export function recordFor(rollout, usage) { + if (!rollout?.records?.length || !usage) return null + const started = Number(usage.started_at) || 0 + let best = null + let bestDelta = Infinity + for (const record of rollout.records) { + if (usage.turn_id && record.turnId && usage.turn_id !== record.turnId) continue + const delta = Math.abs(record.startedAt - started) + if (delta < bestDelta) { + best = record + bestDelta = delta + } + } + return best && bestDelta <= 5000 ? best : null +} + +export function latestRecord(rollout) { + if (!rollout?.records?.length) return null + return rollout.records[rollout.records.length - 1] +} diff --git a/ui-plugins/zcode-context-insight/src/domain/compose.mjs b/ui-plugins/zcode-context-insight/src/domain/compose.mjs new file mode 100644 index 0000000..c710210 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/compose.mjs @@ -0,0 +1,1018 @@ +/** + * Session composition: turn the raw rows into the snapshot the Context panel renders. + * + * The session store is complete, so every request's message composition is reconstructed from it; + * the model-I/O trajectory supplies the request header (system prompt + tool schemas) and is used + * only when a record for that request exists. Category figures are heuristic; provider-reported + * prompt tokens anchor each request's total, so the trend is comparable with the chat's bill. + */ + +import { formatCost, formatTokens, oneLineOf, truncate } from '../shared/estimate.mjs' +import { buildConversationItems, buildHeaderItems } from './items.mjs' +import { buildEvents } from './events.mjs' +import { fileActivity } from './files.mjs' +import { recordFor, latestRecord } from '../data/rollout.mjs' +import { currencyForLocale, priceCall, resolveModel } from '../shared/pricing.mjs' +import { isAgentSource, nonnegative } from './session.mjs' + +const CATS = ['system', 'tools', 'user', 'inject', 'skill', 'assistant', 'tool', 'unknown'] +const MESSAGE_CATS = ['user', 'inject', 'skill', 'assistant', 'tool'] + +export const CATEGORY_META = [ + { key: 'system', color: 'var(--cat-system)' }, + { key: 'tools', color: 'var(--cat-tools)' }, + { key: 'user', color: 'var(--cat-user)' }, + { key: 'inject', color: 'var(--cat-inject)' }, + { key: 'skill', color: 'var(--cat-skill)' }, + { key: 'assistant', color: 'var(--cat-assistant)' }, + { key: 'tool', color: 'var(--cat-tool)' }, + { key: 'unknown', color: 'var(--cat-unknown)' }, +] + +function emptyParts() { + return { system: 0, tools: 0, user: 0, inject: 0, skill: 0, assistant: 0, tool: 0, unknown: 0 } +} + +function sumParts(parts) { + let total = 0 + for (const cat of CATS) total += Number(parts[cat]) || 0 + return total +} + +function addItem(parts, item) { + const cat = CATS.includes(item.cat) ? item.cat : 'unknown' + parts[cat] += Number(item.tokens) || 0 +} + +function roundParts(parts) { + const out = {} + for (const cat of CATS) out[cat] = Math.max(0, Math.round(Number(parts[cat]) || 0)) + return out +} + +/** Keep the visual total equal to the provider's prompt count after rounding. */ +function reconcile(parts, target) { + if (!Number.isFinite(target) || target <= 0) return roundParts(parts) + const out = roundParts(parts) + let total = sumParts(out) + let diff = Math.round(target) - total + if (diff === 0) return out + const order = [...CATS].sort((a, b) => out[b] - out[a]) + for (const cat of order) { + if (diff === 0) break + if (diff > 0) { + out[cat] += diff + diff = 0 + } else { + const take = Math.min(out[cat], -diff) + out[cat] -= take + diff += take + } + } + // If the target was smaller than every recorded bucket (rare), keep the target honestly in + // `unknown` rather than silently zeroing a known category. + if (diff !== 0) out.unknown = Math.max(0, out.unknown + diff) + return out +} + +function boundaryOf(row, conversation) { + const assistant = row.assistant_message_id ? conversation.messageMap.get(row.assistant_message_id) : null + const seq = Number.isFinite(assistant?.sequence) ? assistant.sequence : null + return { seq, time: Number(row.started_at) || 0, assistantId: row.assistant_message_id ?? null } +} + +function beforeBoundary(item, boundary) { + if (item.header) return true + if (boundary.seq !== null && Number.isFinite(item.messageSeq)) return item.messageSeq < boundary.seq + return (item.time ?? 0) < boundary.time +} + +function headerFor(row, rollout, fallback) { + const exact = recordFor(rollout, row) + const record = exact ?? fallback + const header = buildHeaderItems(record) + return { + ...header, + exact: Boolean(exact), + estimated: !exact && Boolean(record), + missing: !record, + record, + maxOutputTokens: header.maxOutputTokens ?? null, + } +} + +function anchorRequest(header, messageItems, row) { + const raw = emptyParts() + for (const item of header.items) addItem(raw, item) + const messageRaw = emptyParts() + for (const item of messageItems) addItem(messageRaw, item) + for (const cat of MESSAGE_CATS) raw[cat] += messageRaw[cat] + + const actual = Number(row.input_tokens) > 0 ? Number(row.input_tokens) : 0 + const headerRaw = (raw.system ?? 0) + (raw.tools ?? 0) + const messageTotal = MESSAGE_CATS.reduce((sum, cat) => sum + messageRaw[cat], 0) + const allRaw = sumParts(raw) + let parts = { ...raw } + let scale = 1 + let scaleAll = 1 + + if (actual > 0 && allRaw > 0) { + if (header.missing) { + if (messageTotal > actual) { + scale = actual / Math.max(1, messageTotal) + for (const cat of MESSAGE_CATS) parts[cat] = messageRaw[cat] * scale + parts.system = 0 + parts.tools = 0 + } else { + parts.unknown = Math.max(0, actual - messageTotal) + } + parts = reconcile(parts, actual) + } else { + const targetMessages = actual - headerRaw + if (targetMessages >= 0) { + if (messageTotal > 0) { + scale = targetMessages / messageTotal + for (const cat of MESSAGE_CATS) parts[cat] = messageRaw[cat] * scale + parts.unknown = 0 + } else { + parts.unknown = targetMessages + } + } else { + scaleAll = actual / allRaw + scale = scaleAll + for (const cat of CATS) parts[cat] = raw[cat] * scaleAll + parts.unknown = 0 + } + parts = reconcile(parts, actual) + } + } else if (header.missing && actual > 0) { + parts.unknown = actual + parts = reconcile(parts, actual) + } + + const prompt = actual || sumParts(roundParts(raw)) + return { + parts: roundParts(parts), + prompt, + rawParts: roundParts(raw), + rawTotal: allRaw, + scale, + scaleAll, + headerRaw, + messageTotal, + anchored: actual > 0, + } +} + +function requestRowView(row, index, turnNumber, boundary, header, messageItems, session, options) { + const anchor = anchorRequest(header, messageItems, row) + const provider = row.provider_id ?? '' + const model = row.model_id ?? '' + const info = resolveModel(provider, model, options) + const cacheRead = nonnegative(row.cache_read_input_tokens) ?? 0 + const cacheWrite = nonnegative(row.cache_creation_input_tokens) ?? 0 + const output = nonnegative(row.output_tokens) ?? 0 + const reasoning = nonnegative(row.reasoning_tokens) ?? 0 + const input = nonnegative(row.input_tokens) ?? 0 + const cost = priceCall( + provider, + model, + { input, cacheRead, cacheWrite, output }, + { priceFile: options.priceFile, currency: options.currency }, + ) + return { + index, + step: index, + turn: turnNumber, + time: row.started_at, + startedAt: row.started_at, + completedAt: row.completed_at ?? null, + model, + provider, + status: row.status ?? 'unknown', + finishReason: row.finish_reason ?? null, + prompt: anchor.prompt, + input, + output, + reasoning, + cacheRead, + cacheWrite, + total: input + output, + parts: anchor.parts, + rawParts: anchor.rawParts, + rawTotal: anchor.rawTotal, + anchorScale: anchor.scale, + anchored: anchor.anchored, + durationMs: nonnegative(row.duration_ms) ?? null, + ttftMs: nonnegative(row.time_to_first_token_ms) ?? null, + toolCalls: nonnegative(row.tool_call_count) ?? 0, + querySource: row.query_source, + headerEstimated: header.estimated, + headerMissing: header.missing, + contextWindow: info.contextWindow, + contextPct: info.contextWindow ? (anchor.prompt / info.contextWindow) * 100 : null, + cost, + currency: options.currency, + turnId: row.turn_id ?? null, + assistantMessageId: row.assistant_message_id ?? null, + parentUserMessageId: row.parent_user_message_id ?? null, + boundary: boundary.seq, + boundaryTime: boundary.time, + complete: true, + } +} + +function turnNumbers(rows) { + const map = new Map() + let next = 0 + for (const row of rows) { + const key = row.turn_id ?? '__row:' + row.started_at + if (!map.has(key)) map.set(key, ++next) + } + return map +} + +function assistantPreview(conversation, assistantMessageId) { + if (!assistantMessageId) return { text: '', tools: [] } + const parts = conversation.byMessage.get(assistantMessageId) ?? [] + let text = '' + const tools = [] + for (const part of parts) { + if (part.type === 'text' && !text) text = String(part.text_preview ?? '') + if (part.type === 'tool') tools.push(String(part.tool ?? 'tool')) + } + return { text, tools } +} + +function messageForTurn(conversation, row) { + if (row.parent_user_message_id) { + const message = conversation.messageMap.get(row.parent_user_message_id) + if (message) return message + } + const boundary = boundaryOf(row, conversation) + let best = null + for (const message of conversation.messages) { + if (message.role !== 'user' || message.kind !== 'user_prompt') continue + if (boundary.seq !== null && message.sequence != null && message.sequence >= boundary.seq) continue + if (boundary.seq === null && message.time_created >= boundary.time) continue + best = message + } + return best +} + +function humanInputCount(conversation) { + return conversation.messages.filter( + (message) => + message.role === 'user' && + message.kind === 'user_prompt' && + message.origin === 'real_user' && + message.visibility !== 'hidden', + ).length +} + +function answerCount(conversation) { + let count = 0 + for (const message of conversation.messages) { + if (message.role !== 'assistant' || message.visibility === 'hidden') continue + const parts = conversation.byMessage.get(message.id) ?? [] + if (parts.some((part) => part.type === 'text' && Number(part.text_chars) > 0)) count++ + } + return count +} + +function toolCallCount(conversation) { + let count = 0 + for (const part of conversation.parts) { + if (part.type === 'tool') count++ + } + return count +} + +function imageCount(items) { + return items.filter((item) => item.kind === 'image' && item.images).reduce((sum, item) => sum + item.images, 0) +} + +function skillNames(items) { + return [...new Set(items.filter((item) => item.cat === 'skill' && item.skill).map((item) => item.skill))] +} + +function timingOf(rows, toolRows, conversation) { + let modelMs = 0 + let ttftMs = 0 + let outputTokens = 0 + let calls = 0 + const spans = [] + for (const row of rows) { + const duration = nonnegative(row.duration_ms) ?? 0 + modelMs += duration + const ttft = nonnegative(row.time_to_first_token_ms) ?? 0 + ttftMs += ttft + outputTokens += nonnegative(row.output_tokens) ?? 0 + if (duration > 0 || row.status === 'completed') calls++ + const start = Number(row.started_at) || 0 + const first = Number(row.first_token_at) || (ttft > 0 && start > 0 ? start + ttft : 0) + const end = Number(row.completed_at) || 0 + if (start > 0 && first > start) spans.push({ kind: 'ttft', start, end: first }) + if (first > 0 && end > first) spans.push({ kind: 'text', start: first, end }) + } + let toolsMs = 0 + let toolCalls = 0 + for (const tool of toolRows) { + toolsMs += nonnegative(tool.duration_ms) ?? 0 + if (tool.tool_name) toolCalls++ + const start = Number(tool.started_at) || 0 + const end = Number(tool.completed_at) || 0 + if (start > 0 && end > start) spans.push({ kind: 'tools', start, end }) + } + const starts = rows.map((row) => Number(row.started_at) || 0).filter(Boolean) + const ends = rows.map((row) => Number(row.completed_at) || Number(row.started_at) || 0).filter(Boolean) + const wallMs = starts.length && ends.length ? Math.max(0, Math.max(...ends) - Math.min(...starts)) : 0 + const genMs = Math.max(0, modelMs - ttftMs) + const otherMs = Math.max(0, wallMs - modelMs - toolsMs) + spans.sort((a, b) => a.start - b.start || a.end - b.end) + return { + wallMs, + ttftMs, + genMs, + modelMs, + toolsMs, + otherMs, + calls, + toolCalls, + outputTokens, + speedTokens: outputTokens, + speedMs: genMs, + spans: spans.slice(0, 360), + } +} + +/** Compaction cuts: a request after a compaction must not count the messages it summarized. */ +function compactionCuts(conversation) { + const cuts = [] + for (const part of conversation.parts) { + if (part.type !== 'compaction' && !(part.type === 'timeline' && part.timeline_type === 'context_compaction')) continue + let data + try { + data = JSON.parse(part.raw_preview) + } catch { + continue + } + if (!data || typeof data !== 'object') continue + const boundary = data.compactBoundary && typeof data.compactBoundary === 'object' ? data.compactBoundary : {} + const lastId = boundary.lastSummarizedMessageId ?? data.lastSummarizedMessageId + const lastMessage = lastId ? conversation.messageMap.get(lastId) : null + if (!lastMessage || !Number.isFinite(lastMessage.sequence)) continue + const summaryId = data.summaryMessageId ?? boundary.summaryMessageId ?? null + const summaryMessage = summaryId ? conversation.messageMap.get(summaryId) : null + cuts.push({ + time: Number(data.time?.start) || part.time_created, + lastSeq: lastMessage.sequence, + summarySeq: summaryMessage?.sequence ?? null, + }) + } + return cuts.sort((a, b) => a.time - b.time || a.lastSeq - b.lastSeq) +} + +function cutFor(time, boundary, cuts) { + let applied = null + for (const cut of cuts) { + if (cut.time > time) break + if (boundary.seq !== null && cut.lastSeq >= boundary.seq) continue + applied = cut + } + return applied +} + +function coverageOf(rollout, rows, headers, fullRetention) { + const exact = headers.filter((header) => header.exact).length + const estimated = headers.filter((header) => header.estimated).length + const missing = headers.filter((header) => header.missing).length + const warnings = [] + if (missing > 0) warnings.push('header-missing') + if (estimated > 0) warnings.push('header-estimated') + if (fullRetention === false) warnings.push('retention-off') + if (!rollout?.available) warnings.push('rollout-missing') + return { + rollout: rollout?.coverage ?? 'none', + rolloutAvailable: Boolean(rollout?.available), + fullRetention: fullRetention ?? null, + headerExact: exact, + headerEstimated: estimated, + headerMissing: missing, + messageSource: 'session-store', + warnings, + } +} + +function lastUserItem(items) { + let last = null + for (const item of items) { + if (item.cat === 'user' && item.kind === 'prompt') last = item + } + return last +} + +function compactEvent(event) { + return { + id: event.id, + kind: event.kind, + time: event.time, + endedAt: event.endedAt ?? null, + status: event.status ?? null, + trigger: event.trigger ?? null, + reason: event.reason ?? null, + phase: event.phase ?? null, + from: event.from ?? null, + to: event.to ?? null, + name: event.name ?? null, + source: event.source ?? null, + form: event.form ?? null, + sub: event.sub ?? null, + tokens: event.tokens ?? null, + delta: event.delta ?? null, + summarizedCount: event.summarizedCount ?? null, + keptCount: event.keptCount ?? null, + preTokens: event.preTokens ?? null, + postTokens: event.postTokens ?? null, + durationMs: event.durationMs ?? null, + turn: event.turn ?? null, + step: event.step ?? null, + fromTurn: event.fromTurn ?? null, + fromStep: event.fromStep ?? null, + itemKey: event.itemKey ?? null, + text: truncate(event.text ?? '', 300), + summarySequence: event.summarySequence ?? null, + lastSequence: event.lastSequence ?? null, + queryId: event.queryId ?? null, + detail: event.detail ?? null, + } +} + +/** + * Build the complete session view. The heavy underlying collections are attached as non-enumerable + * properties so a JSON response for the panel's summary never carries every request element. + */ +export function buildSessionView({ + session, + usageRows, + toolRows = [], + turnRows = [], + conversation, + rollout, + preferences, + providerWindows, + fullRetention = null, + subagentStats = null, + now = Date.now(), +}) { + const currency = currencyForLocale(preferences?.language === 'zh' ? 'zh' : preferences?.locale, preferences?.currency) + const options = { + priceFile: preferences?.priceFile ?? '', + windowOverride: preferences?.contextWindow ?? 0, + providerWindows, + currency, + } + const rows = usageRows + .filter((row) => isAgentSource(row.query_source)) + .sort( + (a, b) => + (Number(a.started_at) || 0) - (Number(b.started_at) || 0) || + String(a.logical_request_id ?? '').localeCompare(String(b.logical_request_id ?? '')) || + (Number(a.attempt_index) || 0) - (Number(b.attempt_index) || 0), + ) + const items = buildConversationItems(conversation) + const cuts = compactionCuts(conversation) + const fallback = latestRecord(rollout) + const turnMap = turnNumbers(rows) + const headers = [] + const requestItems = [] + const requests = [] + + for (const [index, row] of rows.entries()) { + const boundary = boundaryOf(row, conversation) + const header = headerFor(row, rollout, fallback) + headers.push(header) + const cut = cutFor(Number(row.started_at) || 0, boundary, cuts) + const messageItems = items.filter((item) => beforeBoundary(item, boundary) && (cut === null || item.messageSeq == null || item.messageSeq > cut.lastSeq)) + requestItems.push({ row, boundary, header, messageItems }) + requests.push(requestRowView(row, index + 1, turnMap.get(row.turn_id ?? '__row:' + row.started_at), boundary, header, messageItems, session, options)) + } + + const current = requests[requests.length - 1] ?? null + const currentBundle = requestItems[requestItems.length - 1] ?? null + const currentItems = currentBundle ? [...currentBundle.header.items, ...currentBundle.messageItems] : [] + const currentModel = current ? resolveModel(current.provider, current.model, options) : null + const window = currentModel?.contextWindow ?? null + const maxOutputTokens = currentBundle?.header.maxOutputTokens ?? currentModel?.maxOutput ?? null + const lastUser = lastUserItem(currentItems) + const currentParts = current?.parts ?? emptyParts() + + let cost = null + let costCurrency = currency + let pricedCalls = 0 + for (const request of requests) { + if (request.cost != null) { + cost = (cost ?? 0) + request.cost + pricedCalls++ + } + } + const stats = { + turns: turnMap.size, + steps: requests.length, + humanInputs: humanInputCount(conversation), + answers: answerCount(conversation), + toolCalls: toolCallCount(conversation), + images: imageCount(currentItems), + skills: skillNames(items).length, + skillNames: skillNames(items).slice(0, 20), + promptTokens: requests.reduce((sum, request) => sum + request.prompt, 0), + outputTokens: requests.reduce((sum, request) => sum + request.output, 0), + billedTokens: requests.reduce((sum, request) => sum + request.prompt + request.output, 0), + cacheRead: requests.reduce((sum, request) => sum + request.cacheRead, 0), + cacheWrite: requests.reduce((sum, request) => sum + request.cacheWrite, 0), + cacheHitRate: null, + cost, + currency: costCurrency, + pricedCalls, + unpricedCalls: requests.length - pricedCalls, + timing: timingOf(rows, toolRows, conversation), + subagents: subagentStats ?? { count: 0, usage: null }, + currentMessages: currentBundle?.messageItems.length ?? 0, + } + const billedPrompt = stats.promptTokens + stats.cacheHitRate = billedPrompt > 0 ? (stats.cacheRead / billedPrompt) * 100 : null + + const eventList = buildEvents(conversation, items, requests) + const fileSummary = fileActivity(conversation, current?.boundary ?? null) + const toolTally = new Map() + for (const part of conversation.parts) { + if (part.type !== 'tool' || !part.tool) continue + toolTally.set(part.tool, (toolTally.get(part.tool) ?? 0) + 1) + } + stats.toolTally = [...toolTally.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).slice(0, 8) + for (const header of headers) { + for (const item of header.items) { + if (item.cat === 'tools') item.calls = toolTally.get(item.tool) ?? 0 + } + } + stats.files = fileSummary.totals + const eventCounts = { inject: 0, compaction: 0, prune: 0, model: 0, mode: 0, rewind: 0, mcp: 0 } + for (const event of eventList) if (eventCounts[event.kind] != null) eventCounts[event.kind]++ + stats.eventCounts = eventCounts + const coverage = coverageOf(rollout, rows, headers, fullRetention) + const currentPct = window ? (current?.prompt ?? 0) / window * 100 : null + + const view = { + session: { + id: session.id, + title: session.title, + directory: session.directory, + projectId: session.project_id, + parentId: session.parent_id ?? null, + taskType: session.task_type ?? null, + createdAt: session.time_created, + updatedAt: session.time_updated, + model: current?.model ?? null, + provider: current?.provider ?? null, + contextWindow: window, + contextWindowSource: currentModel?.windowSource ?? null, + maxOutputTokens, + currency, + }, + stats, + current: current + ? { + index: current.index, + step: current.step, + turn: current.turn, + time: current.time, + model: current.model, + provider: current.provider, + status: current.status, + prompt: current.prompt, + total: current.total, + output: current.output, + reasoning: current.reasoning, + cacheRead: current.cacheRead, + cacheWrite: current.cacheWrite, + window, + pct: currentPct, + reserve: maxOutputTokens, + parts: currentParts, + headerEstimated: current.headerEstimated, + headerMissing: current.headerMissing, + lastUser: lastUser?.preview ?? lastUser?.title ?? null, + lastUserTitle: lastUser?.title ?? null, + toolCalls: currentItems.filter((item) => item.kind === 'tool-result').length, + messages: currentBundle?.messageItems.length ?? 0, + images: imageCount(currentItems), + skills: skillNames(currentItems), + contextWindowSource: currentModel?.windowSource ?? null, + maxOutputTokens, + } + : null, + requests, + events: eventList.map(compactEvent), + files: { + totals: fileSummary.totals, + opCount: fileSummary.opCount, + entries: fileSummary.entries.slice(0, 300).map((entry) => ({ + path: entry.path, + form: entry.form, + reads: entry.reads, + writes: entry.writes, + searches: entry.searches, + added: entry.added, + removed: entry.removed, + pattern: entry.pattern ?? false, + latest: entry.latest, + ops: entry.ops.length, + })), + truncated: fileSummary.entries.length > 300, + }, + coverage, + preferences: preferences ?? {}, + generatedAt: now, + timing: stats.timing, + } + + Object.defineProperty(view, '_items', { value: items, enumerable: false }) + Object.defineProperty(view, '_rows', { value: rows, enumerable: false }) + Object.defineProperty(view, '_requestItems', { value: requestItems, enumerable: false }) + Object.defineProperty(view, '_headers', { value: headers, enumerable: false }) + Object.defineProperty(view, '_conversation', { value: conversation, enumerable: false }) + Object.defineProperty(view, '_rollout', { value: rollout, enumerable: false }) + Object.defineProperty(view, '_options', { value: options, enumerable: false }) + Object.defineProperty(view, '_session', { value: session, enumerable: false }) + return view +} + +function enterStamp(item, requests) { + if (item.header) return { step: null, turn: null, live: true } + for (const request of requests) { + if (item.messageSeq != null && request.boundary != null && item.messageSeq < request.boundary) { + return { step: request.step, turn: request.turn, live: request.index === requests[requests.length - 1]?.index } + } + if (item.messageSeq == null && (item.time ?? 0) < (request.startedAt ?? 0)) { + return { step: request.step, turn: request.turn, live: false } + } + } + return { step: null, turn: null, live: false } +} + +export function itemSummary(item, requests) { + return { + key: item.key, + cat: item.cat, + kind: item.kind, + tokens: Math.round(item.tokens ?? 0), + chars: item.chars ?? 0, + title: truncate(item.title ?? '', 180), + preview: truncate(item.preview ?? '', 160), + tool: item.tool ?? null, + toolCallId: item.toolCallId ?? null, + status: item.status ?? null, + source: item.source ?? null, + skill: item.skill ?? null, + form: item.form ?? null, + time: item.time ?? null, + messageId: item.messageId ?? null, + partId: item.partId ?? null, + messageSeq: item.messageSeq ?? null, + order: item.order ?? 0, + lineCount: item.lineCount ?? null, + images: item.images ?? 0, + calls: item.calls ?? null, + enter: enterStamp(item, requests), + header: Boolean(item.header), + } +} + +function groupItems(items, requests) { + const groups = [] + for (const meta of CATEGORY_META) { + const list = items.filter((item) => item.cat === meta.key) + if (list.length === 0) continue + const sorted = [...list].sort((a, b) => (b.tokens ?? 0) - (a.tokens ?? 0) || (a.order ?? 0) - (b.order ?? 0)) + groups.push({ + cat: meta.key, + color: meta.color, + count: list.length, + tokens: Math.round(list.reduce((sum, item) => sum + (item.tokens ?? 0), 0)), + items: sorted.slice(0, 100).map((item) => itemSummary(item, requests)), + more: Math.max(0, sorted.length - 100), + }) + } + return groups +} + +function diffOf(currentItems, baselineItems, currentRequest, baselineRequest) { + if (!baselineRequest) { + return { available: false, reason: 'no-baseline', added: [], removed: [], categories: [] } + } + const keyOf = (item) => item.key + const before = new Map(baselineItems.map((item) => [keyOf(item), item])) + const after = new Map(currentItems.map((item) => [keyOf(item), item])) + const added = currentItems.filter((item) => !before.has(keyOf(item))) + const removed = baselineItems.filter((item) => !after.has(keyOf(item))) + const categories = CATEGORY_META.map((meta) => { + const beforeTokens = baselineRequest.parts[meta.key] ?? 0 + const afterTokens = currentRequest.parts[meta.key] ?? 0 + return { + cat: meta.key, + before: beforeTokens, + after: afterTokens, + delta: afterTokens - beforeTokens, + added: added.filter((item) => item.cat === meta.key).length, + removed: removed.filter((item) => item.cat === meta.key).length, + } + }).filter((row) => row.before || row.after || row.added || row.removed) + const changed = [] + for (const item of currentItems) { + const previous = before.get(keyOf(item)) + if (!previous) continue + if (Math.abs((item.tokens ?? 0) - (previous.tokens ?? 0)) > Math.max(8, (previous.tokens ?? 0) * 0.05)) { + changed.push({ + before: { ...itemSummary(previous, []) }, + after: { ...itemSummary(item, []) }, + }) + } + } + return { + available: true, + reason: null, + added: added.slice(0, 200).map((item) => itemSummary(item, currentRequest ? [currentRequest] : [])), + removed: removed.slice(0, 200).map((item) => itemSummary(item, baselineRequest ? [baselineRequest] : [])), + categories, + changed: changed.slice(0, 60), + addedCount: added.length, + removedCount: removed.length, + } +} + +function briefOf(currentBundle, previousBundle, conversation, request) { + const userMessage = messageForTurn(conversation, request ? { ...request, started_at: request.startedAt } : {}) + const userParts = userMessage ? conversation.byMessage.get(userMessage.id) ?? [] : [] + const userText = userParts.find((part) => part.type === 'text' && Number(part.text_chars) > 0)?.text_preview ?? '' + const previousKeys = new Set(previousBundle ? [...previousBundle.header.items, ...previousBundle.messageItems].map((item) => item.key) : []) + const currentItems = [...currentBundle.header.items, ...currentBundle.messageItems] + const incoming = currentItems + .filter((item) => !item.header && !previousKeys.has(item.key)) + .sort((a, b) => (b.tokens ?? 0) - (a.tokens ?? 0)) + const response = assistantPreview(conversation, currentBundle.row.assistant_message_id) + return { + user: { + title: userMessage ? oneLineOf(userText || userMessage.summary_title || 'User message', 180) : '', + messageId: userMessage?.id ?? null, + turnId: request?.turnId ?? null, + }, + incoming: incoming.slice(0, 5).map((item) => itemSummary(item, [])), + incomingCount: incoming.length, + response: { + title: oneLineOf(response.text, 220), + tools: response.tools.slice(0, 8), + toolCount: response.tools.length, + }, + } +} + +/** + * Detail for one selected request: category groups, a diff against a baseline, the step brief, + * the flat DNA order, and the file activity up to this request. + */ +export function buildStepDetail(view, stepIndex, { baselineMode = 'step', search = '', sort = 'size' } = {}) { + const index = Math.max(0, Math.min(view._rows.length - 1, Number(stepIndex) - 1)) + const bundle = view._requestItems[index] + if (!bundle) return null + const request = view.requests[index] + const items = [...bundle.header.items, ...bundle.messageItems] + let baselineIndex = baselineMode === 'off' ? -1 : index - 1 + if (baselineMode === 'turn') { + const turn = request.turn + while (baselineIndex >= 0 && view.requests[baselineIndex].turn === turn) baselineIndex-- + } + const baselineBundle = baselineIndex >= 0 ? view._requestItems[baselineIndex] : null + const baselineRequest = baselineIndex >= 0 ? view.requests[baselineIndex] : null + const baselineItems = baselineBundle ? [...baselineBundle.header.items, ...baselineBundle.messageItems] : [] + let filtered = items + if (typeof search === 'string' && search.trim()) { + const needle = search.trim().toLowerCase() + filtered = items.filter( + (item) => + String(item.title ?? '').toLowerCase().includes(needle) || + String(item.preview ?? '').toLowerCase().includes(needle) || + String(item.tool ?? '').toLowerCase().includes(needle) || + String(item.skill ?? '').toLowerCase().includes(needle), + ) + } + if (sort === 'order') filtered = [...filtered].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)) + else if (sort === 'name') filtered = [...filtered].sort((a, b) => String(a.title).localeCompare(String(b.title))) + else if (sort === 'calls') filtered = [...filtered].sort((a, b) => (b.calls ?? -1) - (a.calls ?? -1) || (b.tokens ?? 0) - (a.tokens ?? 0)) + const groups = groupItems(filtered, view.requests) + const diff = diffOf(items, baselineItems, request, baselineRequest) + const brief = briefOf(bundle, baselineBundle, view._conversation, request) + const files = fileActivity(view._conversation, bundle.boundary.seq) + const dna = items + .filter((item) => (item.tokens ?? 0) > 0) + .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)) + .map((item, position) => ({ + ...itemSummary(item, view.requests), + position: position + 1, + dnaCat: item.header ? (item.cat === 'system' ? 'system' : 'tools') : item.cat, + })) + return { + step: request.step, + turn: request.turn, + index: request.index, + request, + baseline: baselineRequest + ? { step: baselineRequest.step, turn: baselineRequest.turn, mode: baselineMode } + : null, + groups, + diff, + brief, + dna, + files: { + totals: files.totals, + opCount: files.opCount, + entries: files.entries.slice(0, 300).map((entry) => ({ + ...entry, + ops: entry.ops.slice(0, 100), + })), + truncated: files.entries.length > 300, + }, + header: { + exact: bundle.header.exact, + estimated: bundle.header.estimated, + missing: bundle.header.missing, + maxOutputTokens: bundle.header.maxOutputTokens, + }, + coverage: view.coverage, + generatedAt: Date.now(), + } +} + +/** + * One category's page of elements for the selected request. The full step detail is intentionally + * capped; the browser loads more from here on demand. + */ +export function buildGroupDetail(view, stepIndex, cat, { offset = 0, limit = 40, search = '', sort = 'size' } = {}) { + const index = Math.max(0, Math.min(view._rows.length - 1, Number(stepIndex) - 1)) + const bundle = view._requestItems[index] + if (!bundle) return null + const all = [...bundle.header.items, ...bundle.messageItems].filter((item) => item.cat === cat) + let filtered = all + if (typeof search === 'string' && search.trim()) { + const needle = search.trim().toLowerCase() + filtered = all.filter( + (item) => + String(item.title ?? '').toLowerCase().includes(needle) || + String(item.preview ?? '').toLowerCase().includes(needle) || + String(item.tool ?? '').toLowerCase().includes(needle) || + String(item.skill ?? '').toLowerCase().includes(needle), + ) + } + if (sort === 'order') filtered = [...filtered].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)) + else if (sort === 'name') filtered = [...filtered].sort((a, b) => String(a.title).localeCompare(String(b.title))) + else if (sort === 'calls') filtered = [...filtered].sort((a, b) => (b.calls ?? -1) - (a.calls ?? -1) || (b.tokens ?? 0) - (a.tokens ?? 0)) + else filtered = [...filtered].sort((a, b) => (b.tokens ?? 0) - (a.tokens ?? 0) || (a.order ?? 0) - (b.order ?? 0)) + const start = Math.max(0, Number(offset) || 0) + const size = Math.max(1, Math.min(100, Number(limit) || 40)) + const items = filtered.slice(start, start + size).map((item) => itemSummary(item, view.requests)) + return { + step: view.requests[index].step, + turn: view.requests[index].turn, + cat, + total: filtered.length, + tokens: Math.round(filtered.reduce((sum, item) => sum + (item.tokens ?? 0), 0)), + offset: start, + items, + nextOffset: start + items.length < filtered.length ? start + items.length : null, + more: Math.max(0, filtered.length - start - items.length), + } +} + +/** Flattened prompt-order DNA list for one request, paginated. */ +export function buildDnaDetail(view, stepIndex, { offset = 0, limit = 120 } = {}) { + const index = Math.max(0, Math.min(view._rows.length - 1, Number(stepIndex) - 1)) + const bundle = view._requestItems[index] + if (!bundle) return null + const all = [...bundle.header.items, ...bundle.messageItems] + .filter((item) => (item.tokens ?? 0) > 0) + .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)) + const start = Math.max(0, Number(offset) || 0) + const size = Math.max(1, Math.min(200, Number(limit) || 120)) + const items = all.slice(start, start + size).map((item, position) => { + const summary = itemSummary(item, view.requests) + return { + key: summary.key, + cat: summary.cat, + kind: summary.kind, + tokens: summary.tokens, + title: summary.title, + tool: summary.tool, + skill: summary.skill, + enter: summary.enter, + position: start + position + 1, + dnaCat: item.header ? (item.cat === 'system' ? 'system' : 'tools') : item.cat, + } + }) + return { + step: view.requests[index].step, + turn: view.requests[index].turn, + total: all.length, + offset: start, + items, + nextOffset: start + items.length < all.length ? start + items.length : null, + } +} + +/** + * Per-request DNA fingerprints for the trend bars: each band is one item (or a merged run of adjacent + * items) in prompt order, encoded as [categoryIndex, tokens]. Bars remain scaled by the request's + * actual prompt; this series only supplies the internal texture. Compressed to `maxBands` so a long + * session stays inside the host payload budget. + */ +export function buildDnaSeries(view, { fromStep = 1, toStep = 1_000_000, maxBands = 36 } = {}) { + const limit = Math.max(8, Math.min(80, Number(maxBands) || 36)) + const from = Math.max(1, Number(fromStep) || 1) + const to = Math.max(from, Number(toStep) || 1_000_000) + const steps = [] + for (const [index, request] of view.requests.entries()) { + if (request.step < from || request.step > to) continue + const bundle = view._requestItems[index] + if (!bundle) continue + const items = [...bundle.header.items, ...bundle.messageItems].filter((item) => (item.tokens ?? 0) > 0) + let bands = items.map((item) => ({ cat: CATS.indexOf(item.cat), tokens: Math.max(0, item.tokens ?? 0) })) + // Keep item boundaries (the fingerprint's stripes); merge only when the count exceeds the budget. + while (bands.length > limit) { + let best = 0 + let bestScore = Infinity + for (let i = 0; i + 1 < bands.length; i++) { + const score = bands[i].tokens + bands[i + 1].tokens + (bands[i].cat === bands[i + 1].cat ? 0 : 1e9) + if (score < bestScore) { + bestScore = score + best = i + } + } + if (!Number.isFinite(bestScore) || bestScore >= 1e9) { + // No adjacent same-category pair: merge the smallest adjacent pair, keeping the larger share. + best = 0 + bestScore = Infinity + for (let i = 0; i + 1 < bands.length; i++) { + const score = bands[i].tokens + bands[i + 1].tokens + if (score < bestScore) { + bestScore = score + best = i + } + } + } + const left = bands[best] + const right = bands[best + 1] + bands.splice(best, 2, { + cat: left.tokens >= right.tokens ? left.cat : right.cat, + tokens: left.tokens + right.tokens, + }) + } + steps.push({ + step: request.step, + turn: request.turn, + prompt: request.prompt, + bands: bands.map((band) => [band.cat, Math.round(band.tokens)]), + }) + } + return { categories: CATS, steps, maxBands: limit } +} + +/** A compact, model-readable report for the `/context` command. */ +export function buildReport(view) { + const current = view.current + if (!current) return 'No agent requests are recorded for this session yet.' + const cats = CATEGORY_META.filter((meta) => (current.parts[meta.key] ?? 0) > 0) + .map((meta) => `${meta.key} ${formatTokens(current.parts[meta.key])}`) + .join(', ') + const events = view.events.slice(-5).map((event) => { + if (event.kind === 'compaction') { + return `compaction ${event.status ?? ''} ${event.preTokens ?? '?'}→${event.postTokens ?? '?'} tokens` + } + if (event.kind === 'inject') return `injection ${event.name ?? event.form ?? ''} ${event.tokens ? formatTokens(event.tokens) : ''}`.trim() + if (event.kind === 'model') return `model ${event.from} → ${event.to}` + return event.kind + }) + const lines = [ + `# Context · ${view.session.title ?? view.session.id}`, + `Model: ${current.provider}/${current.model}`, + `Current request: ${formatTokens(current.prompt)} prompt tokens${current.window ? ` / ${formatTokens(current.window)} (${(current.pct ?? 0).toFixed(1)}%)` : ''}`, + `Composition: ${cats || 'no recorded categories'}`, + `Session: ${view.stats.turns} turns · ${view.stats.steps} steps · ${view.stats.toolCalls} tool calls · cache hit ${view.stats.cacheHitRate == null ? '—' : view.stats.cacheHitRate.toFixed(1) + '%'}`, + ] + if (view.stats.cost != null) { + lines.push(`Estimated cost: ${formatCost(view.stats.cost, view.stats.currency ?? 'usd')} (list price; provider billing may differ)`) + } + if (events.length) lines.push('Recent events: ' + events.join('; ')) + if (view.coverage.warnings.length) { + lines.push(`Coverage: ${view.coverage.warnings.join(', ')}; message composition is reconstructed from the session store.`) + } + lines.push('Open the Context panel in the session side pane for the full trend, browser, events and file activity.') + return lines.join('\n') +} diff --git a/ui-plugins/zcode-context-insight/src/domain/detail.mjs b/ui-plugins/zcode-context-insight/src/domain/detail.mjs new file mode 100644 index 0000000..cb3a4e8 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/detail.mjs @@ -0,0 +1,292 @@ +/** + * One element's full content, read on demand and chunked for the 64 KiB MCP result budget. + */ + +import { canonical, lineCountOf, oneLineOf, truncate } from '../shared/estimate.mjs' +import { readFullMessage, readFullPart, readSummarizedMessages } from '../data/db.mjs' +import { ContextError } from './errors.mjs' +import { summaryOfPart } from './items.mjs' + +const DEFAULT_LIMIT = 12_000 +const MAX_LIMIT = 24_000 + +function stringify(value) { + if (typeof value === 'string') return value + if (value == null) return '' + try { + return JSON.stringify(value, null, 2) + } catch { + return String(value) + } +} + +function chunk(text, offset, limit) { + const value = String(text ?? '') + const start = Math.max(0, Math.min(value.length, Number(offset) || 0)) + let size = Math.max(1, Math.min(MAX_LIMIT, Number(limit) || DEFAULT_LIMIT)) + let content = value.slice(start, start + size) + // MCP Apps caps a structured result at 64 KiB of UTF-8, not characters. CJK and emoji can be 3-4x. + while (Buffer.byteLength(content, 'utf8') > 48 * 1024 && size > 256) { + size = Math.floor(size * 0.8) + content = value.slice(start, start + size) + } + const nextOffset = start + content.length + return { + content, + totalChars: value.length, + offset: start, + nextOffset, + truncated: nextOffset < value.length, + lines: lineCountOf(value), + } +} + +function fieldsOf(input) { + if (!input || typeof input !== 'object' || Array.isArray(input)) return null + return Object.entries(input) + .slice(0, 24) + .map(([name, value]) => { + const full = typeof value === 'string' ? value : stringify(value) + return { name, value: truncate(full, 1200), truncated: full.length > 1200 } + }) +} + +function headerItemOf(view, stepIndex, key) { + const bundle = view._requestItems[Math.max(0, Math.min(view._requestItems.length - 1, Number(stepIndex) - 1))] + if (!bundle) return null + return bundle.header.items.find((item) => item.key === key) ?? null +} + +/** Resolve one browser element. */ +export function readElementDetail({ db, view, stepIndex, key, format = 'readable', offset = 0, limit = DEFAULT_LIMIT }) { + const value = String(key ?? '') + if (!value) throw new ContextError('element_missing', 'No context element was selected.') + const header = headerItemOf(view, stepIndex, value) + if (header) { + const raw = header.cat === 'system' ? header.text ?? '' : stringify(header.value) + const shown = format === 'raw' ? raw : header.cat === 'system' ? raw : raw + return { + key: value, + cat: header.cat, + kind: header.kind, + title: header.title, + tool: header.tool ?? null, + source: header.source ?? null, + format, + markdown: header.cat === 'system', + ...chunk(shown, offset, limit), + } + } + + if (value === 'sys') { + const bundle = view._requestItems[Math.max(0, Math.min(view._requestItems.length - 1, Number(stepIndex) - 1))] + const system = bundle?.header?.items?.find((item) => item.key === 'sys') + if (!system) throw new ContextError('element_missing', 'The system prompt was not recorded for this request.') + return { + key: value, + cat: 'system', + kind: 'system', + title: 'System prompt', + format, + markdown: true, + ...chunk(system.text ?? '', offset, limit), + } + } + + if (value.startsWith('p:')) { + const partId = value.split(':')[1] + if (!partId) throw new ContextError('element_missing', 'Malformed element key.') + const part = readFullPart(db, view.session.id, partId) + const data = part.data ?? {} + const type = String(data.type ?? '') + const tool = String(data.tool ?? '') + const summary = summaryOfPart({ + file_path: data.state?.input?.file_path, + path: data.state?.input?.path, + pattern: data.state?.input?.pattern, + command: data.state?.input?.command, + description: data.state?.input?.description, + skill: data.state?.input?.skill, + query: data.state?.input?.query, + url: data.state?.input?.url, + prompt: data.state?.input?.prompt, + input_sample: stringify(data.state?.input).slice(0, 400), + }) + const title = summary ? tool + ' · ' + summary : tool || type + const status = data.state?.status ?? null + if (format === 'raw') { + const raw = stringify(data) + return { key: value, cat: 'tool', kind: type, title, tool, status, format, markdown: false, ...chunk(raw, offset, limit) } + } + if (type === 'text') { + const text = String(data.text ?? '') + return { key: value, cat: 'assistant', kind: 'text', title: oneLineOf(text, 120) || 'Text', tool: null, status: null, format, markdown: true, ...chunk(text, offset, limit) } + } + if (type === 'reasoning') { + const text = String(data.text ?? '') + return { key: value, cat: 'assistant', kind: 'thinking', title: 'Thinking', tool: null, status: null, format, markdown: true, ...chunk(text, offset, limit) } + } + if (type === 'tool') { + const input = data.state?.input + const output = data.state?.output + const call = { + name: tool, + status, + fields: fieldsOf(input), + input: truncate(format === 'raw' ? canonical(input ?? null) : stringify(input ?? null), 4000), + title, + } + if (value.endsWith(':call') || value.endsWith(':skill')) { + const text = value.endsWith(':skill') && output != null ? stringify(output) : stringify(input ?? null) + return { + key: value, + cat: value.endsWith(':skill') ? 'skill' : 'assistant', + kind: value.endsWith(':skill') ? 'skill' : 'tool-call', + title, + tool, + status, + format, + markdown: false, + call, + ...chunk(text, offset, limit), + } + } + const text = output == null ? '' : typeof output === 'string' ? output : stringify(output) + return { + key: value, + cat: 'tool', + kind: 'tool-result', + title, + tool, + status, + format, + markdown: true, + call, + ...chunk(text, offset, limit), + } + } + if (type === 'file') { + const metadata = data.metadata ?? null + const image = metadata?.image ?? {} + return { + key: value, + cat: 'tool', + kind: 'attachment', + title: image.width && image.height ? `Image ${image.width}×${image.height}` : 'Attachment', + tool: null, + status: null, + format, + markdown: false, + attachment: { + mime: data.mime ?? null, + url: data.url ?? null, + width: image.width ?? image.originalWidth ?? null, + height: image.height ?? image.originalHeight ?? null, + bytes: metadata?.sizeBytes ?? metadata?.transformedSizeBytes ?? null, + artifactUri: metadata?.artifactUri ?? null, + }, + ...chunk(stringify(metadata), offset, limit), + } + } + const raw = stringify(data) + return { key: value, cat: 'tool', kind: type || 'unknown', title, tool, status, format, markdown: false, ...chunk(raw, offset, limit) } + } + + if (value.startsWith('m:')) { + const messageId = value.split(':')[1] + if (!messageId) throw new ContextError('element_missing', 'Malformed element key.') + const message = readFullMessage(db, view.session.id, messageId) + const data = message.data ?? {} + const body = String(data.summary?.body ?? '') + const text = body || stringify(data) + return { + key: value, + cat: 'inject', + kind: 'compaction', + title: data.summary?.title || 'Compaction summary', + format, + markdown: true, + ...chunk(text, offset, limit), + } + } + + throw new ContextError('element_missing', 'That context element is not available in this request.') +} + +/** All summarized messages for a compaction event. */ +export function readEventDetail({ db, view, event, offset = 0, limit = 40 }) { + if (!event || event.kind !== 'compaction') { + throw new ContextError('event_incomplete', 'Only compaction events have a summarized-message detail.') + } + let through = Number.isFinite(event.lastSequence) ? event.lastSequence : null + if (through == null) { + return { + event: { + id: event.id, kind: event.kind, time: event.time, status: event.status, + preTokens: event.preTokens, postTokens: event.postTokens, + summarizedCount: event.summarizedCount, keptCount: event.keptCount, + reason: event.reason, trigger: event.trigger, + }, + available: false, + reason: 'no_boundary', + total: 0, + offset: 0, + nextOffset: null, + messages: [], + truncated: false, + } + } + const summarySequence = Number.isFinite(event.summarySequence) ? event.summarySequence : null + // The summary message replaces the summarized range; it must not appear inside it. + if (summarySequence != null && summarySequence > 0 && summarySequence <= through) through = summarySequence - 1 + const afterCandidates = view.events + .filter((candidate) => candidate.kind === 'compaction' && candidate.time < event.time && Number.isFinite(candidate.lastSequence)) + .map((candidate) => candidate.lastSequence) + const after = afterCandidates.length ? Math.max(...afterCandidates) : -1 + const result = readSummarizedMessages(db, view.session.id, { after, through, summary: summarySequence }) + const start = Math.max(0, Number(offset) || 0) + const size = Math.max(1, Math.min(200, Number(limit) || 40)) + return { + event: { + id: event.id, + kind: event.kind, + time: event.time, + status: event.status, + preTokens: event.preTokens, + postTokens: event.postTokens, + summarizedCount: event.summarizedCount, + keptCount: event.keptCount, + reason: event.reason, + trigger: event.trigger, + }, + total: result.total, + offset: start, + nextOffset: start + size < result.total ? start + size : null, + messages: result.messages.slice(start, start + size).map((message) => ({ + id: message.id, + sequence: message.sequence, + time: message.time_created, + role: message.role, + kind: message.kind, + source: message.source, + summary: message.summary_preview ?? null, + parts: (message.parts ?? []).map((part) => ({ + id: part.id, + type: part.type, + tool: part.tool ?? null, + status: part.status ?? null, + text: part.text_preview ?? null, + textChars: part.text_chars ?? 0, + inputSample: part.input_sample ?? null, + inputChars: part.input_chars ?? 0, + outputPreview: part.output_preview ?? null, + outputChars: part.output_chars ?? 0, + description: part.description ?? null, + command: part.command ?? null, + filePath: part.file_path ?? null, + skill: part.skill ?? null, + })), + })), + truncated: result.truncated || start + size < result.total, + } +} diff --git a/ui-plugins/zcode-context-insight/src/domain/errors.mjs b/ui-plugins/zcode-context-insight/src/domain/errors.mjs new file mode 100644 index 0000000..c91612a --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/errors.mjs @@ -0,0 +1,11 @@ +export class ContextError extends Error { + constructor(code, message) { + super(message) + this.name = 'ContextError' + this.code = code + } +} + +export function isContextError(error) { + return error instanceof ContextError +} diff --git a/ui-plugins/zcode-context-insight/src/domain/events.mjs b/ui-plugins/zcode-context-insight/src/domain/events.mjs new file mode 100644 index 0000000..a3240ea --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/events.mjs @@ -0,0 +1,251 @@ +/** + * Context events: everything that entered or rewrote the window, derived from ZCode's own records. + * + * Compactions, model switches, injections and skill loads are authoritative rows in the conversation + * store. The rich compaction parts carry the boundary, token counts, summarized/kept counts and the + * summary message; failed attempts (a timeline-only part) are kept as their own event. + */ + +import { oneLineOf } from '../shared/estimate.mjs' + +const COMPACTION_STATUS_RANK = { + unknown: 0, + started: 1, + retrying: 2, + skipped: 3, + interrupted: 4, + completed: 5, + failed: 5, +} + +function parseJson(text) { + try { + const value = JSON.parse(text) + return value && typeof value === 'object' ? value : null + } catch { + return null + } +} + +function modelLabel(selection) { + if (!selection || typeof selection !== 'object') return null + return ( + selection.label ?? + ([selection.providerId ?? selection.providerID, selection.modelId ?? selection.modelID] + .filter(Boolean) + .join('/') || + null) + ) +} + +function stampFor(time, requests) { + if (!Number.isFinite(time) || requests.length === 0) return { turn: null, step: null, fromTurn: null, fromStep: null } + let from = null + let next = null + for (const request of requests) { + if (request.startedAt <= time) from = request + else { + next = request + break + } + } + const target = next ?? from ?? requests[requests.length - 1] + return { + turn: target?.turn ?? null, + step: target?.step ?? null, + fromTurn: from?.turn ?? null, + fromStep: from?.step ?? null, + } +} + +function compactionKey(data, part) { + return ( + data?.operationId ?? + data?.boundaryId ?? + data?.compactBoundary?.boundaryId ?? + data?.sourceCommandId ?? + 'part:' + part.id + ) +} + +function mergeCompaction(group, data, part) { + if (!data) return group + const boundary = data.compactBoundary && typeof data.compactBoundary === 'object' ? data.compactBoundary : {} + const status = String(data.status ?? data.timelineStatus ?? boundary.status ?? group.status ?? 'unknown').toLowerCase() + if ((COMPACTION_STATUS_RANK[status] ?? 0) >= (COMPACTION_STATUS_RANK[group.status] ?? 0)) group.status = status + const start = Number(data.time?.start ?? boundary.time?.start) + const end = Number(data.time?.end ?? boundary.time?.end) + if (Number.isFinite(start) && start > 0) group.time = Math.min(group.time || start, start) + if (Number.isFinite(end) && end > 0) group.endedAt = Math.max(group.endedAt || 0, end) + group.trigger ??= data.trigger ?? boundary.trigger ?? null + group.reason ??= data.compactReason ?? boundary.compactReason ?? data.reason ?? null + group.phase ??= data.phase ?? boundary.phase ?? null + group.preTokens ??= Number(data.preCompactTokenCount ?? boundary.preCompactTokenCount) || null + group.postTokens ??= + Number(data.truePostCompactTokenCount ?? boundary.truePostCompactTokenCount) || + Number(data.postCompactTokenCount ?? boundary.postCompactTokenCount) || + null + group.summarizedCount ??= Number(boundary.summarizedMessageCount ?? data.summarizedMessageCount) || null + group.keptCount ??= Number(boundary.keptMessageCount ?? data.keptMessageCount) || null + group.lastSummarizedMessageId ??= boundary.lastSummarizedMessageId ?? data.lastSummarizedMessageId ?? null + group.summaryMessageId ??= data.summaryMessageId ?? boundary.summaryMessageId ?? null + group.queryId ??= data.sourceCommandId ?? data.operationId ?? null + group.attempt ??= Number(data.attempt) || null + group.maxAttempts ??= Number(data.maxAttempts) || null + group.auto = data.auto === true || group.trigger === 'auto' || group.auto === true + group.part = group.part ?? part + return group +} + +/** + * Build the whole event log. `items` must be the conversation item list so an injection event can + * point at the exact browser element. + */ +export function buildEvents(conversation, items, requests) { + const events = [] + const groups = new Map() + + for (const part of conversation.parts) { + if (part.type !== 'compaction' && !(part.type === 'timeline' && part.timeline_type === 'context_compaction')) { + continue + } + const data = parseJson(part.raw_preview) + if (!data) continue + const key = String(compactionKey(data, part)) + const group = + groups.get(key) ?? + { + id: 'c:' + key, + kind: 'compaction', + time: part.time_created, + endedAt: null, + status: 'unknown', + trigger: null, + reason: null, + phase: null, + preTokens: null, + postTokens: null, + summarizedCount: null, + keptCount: null, + lastSummarizedMessageId: null, + summaryMessageId: null, + queryId: null, + attempt: null, + maxAttempts: null, + auto: false, + part, + } + mergeCompaction(group, data, part) + groups.set(key, group) + } + + for (const group of groups.values()) { + const summarySequence = group.summaryMessageId + ? conversation.messageMap.get(group.summaryMessageId)?.sequence ?? null + : null + const lastSequence = group.lastSummarizedMessageId + ? conversation.messageMap.get(group.lastSummarizedMessageId)?.sequence ?? null + : null + const stamp = stampFor(group.time, requests) + const delta = + Number.isFinite(group.preTokens) && Number.isFinite(group.postTokens) + ? group.postTokens - group.preTokens + : null + events.push({ + ...group, + ...stamp, + time: group.time, + endedAt: group.endedAt, + durationMs: group.endedAt && group.time ? Math.max(0, group.endedAt - group.time) : null, + delta, + tokens: delta != null ? Math.abs(delta) : null, + status: group.status === 'unknown' && (group.summaryMessageId || group.summarizedCount) ? 'completed' : group.status, + summarySequence, + lastSequence, + detail: + group.trigger === 'auto' + ? group.reason || 'auto compaction' + : group.trigger || group.reason || 'compaction', + }) + } + + for (const item of items) { + if (item.cat === 'inject' && item.kind !== 'compaction') { + events.push({ + id: 'i:' + item.key, + kind: 'inject', + form: item.form ?? 'context', + name: item.source ?? item.form ?? null, + source: item.source ?? null, + tokens: item.tokens, + time: item.time ?? 0, + text: item.preview ?? '', + itemKey: item.key, + messageId: item.messageId, + partId: item.partId, + ...stampFor(item.time ?? 0, requests), + }) + } else if (item.cat === 'skill') { + events.push({ + id: 's:' + item.key, + kind: 'inject', + form: 'skill', + sub: 'skill', + name: item.skill ?? null, + tokens: item.tokens, + time: item.time ?? 0, + text: item.title, + itemKey: item.key, + messageId: item.messageId, + partId: item.partId, + ...stampFor(item.time ?? 0, requests), + }) + } + } + + for (const part of conversation.parts) { + if (part.type !== 'timeline' || part.timeline_type !== 'model_change') continue + const data = parseJson(part.raw_preview) + if (!data) continue + const from = modelLabel(data.fromModelSelection ?? data.fromModel) + const to = modelLabel(data.toModelSelection ?? data.toModel) + if (!to || from === to) continue + const time = Number(data.time?.start) || part.time_created + events.push({ + id: 'm:' + part.id, + kind: 'model', + time, + from: from ?? '—', + to, + ...stampFor(time, requests), + }) + } + + // A rewound conversation is a context event in its own right. The store keeps the abandoned + // branch, so the card can say the current window was narrowed even without a per-message stamp. + if (conversation.branch && conversation.branch.size > 0) { + const last = requests[requests.length - 1] + if (last) { + events.push({ + id: 'rewind:session', + kind: 'rewind', + time: last.completedAt ?? last.startedAt, + keptCount: conversation.branch.size, + ...stampFor(last.startedAt, requests), + }) + } + } + + events.sort((a, b) => a.time - b.time || String(a.id).localeCompare(String(b.id))) + return events +} + +export function eventPreview(event) { + if (event.kind === 'compaction') { + return [event.trigger, event.reason, event.phase].filter(Boolean).join(' · ') + } + if (event.kind === 'inject') return event.name || event.form || '' + if (event.kind === 'model') return event.from + ' → ' + event.to + if (event.kind === 'rewind') return event.keptCount ? event.keptCount + ' kept' : '' + return oneLineOf(event.detail, 160) +} diff --git a/ui-plugins/zcode-context-insight/src/domain/files.mjs b/ui-plugins/zcode-context-insight/src/domain/files.mjs new file mode 100644 index 0000000..fdadb72 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/files.mjs @@ -0,0 +1,265 @@ +/** + * File activity: one row per touched file, aggregated from settled tool calls. + * + * Read/Write/Edit carry exact structured metadata in ZCode (read window, file state, and edit + * addition/deletion counts). Bash is included only for unambiguous path-bearing commands and is + * marked as an estimate; the card never pretends to know more than the recorded call says. + */ + +import { lineCountOf, oneLineOf } from '../shared/estimate.mjs' + +const IMAGE_EXT = /\.(png|jpe?g|gif|webp|svg|bmp|ico|avif)$/i +const CODE_EXT = /\.(tsx?|jsx?|mjs|cjs|py|go|rs|java|kt|rb|php|c|h|cpp|cs|scala|lua|dart|swift|vue|svelte|sh|bash|zsh|html|css|scss|sass|less|sql|md|mdx|json|ya?ml|toml)$/i + +function formOf(path, tool) { + if (tool === 'Read' && typeof path === 'string' && IMAGE_EXT.test(path)) return 'image' + if (typeof path === 'string' && IMAGE_EXT.test(path)) return 'image' + if (typeof path === 'string' && path.endsWith('/')) return 'dir' + return 'text' +} + +function finiteNumber(value) { + if (value === null || value === undefined) return null + const number = Number(value) + return Number.isFinite(number) ? number : null +} + +function barePath(value) { + const path = String(value ?? '').trim() + if (!path) return '' + return path.replace(/^['"]|['"]$/g, '') +} + +function pathFromInput(part) { + for (const key of ['file_path', 'read_path', 'input_path', 'path']) { + const value = barePath(part[key]) + if (value) return value + } + return '' +} + +/** Conservative shell parse: only explicit path operands, never a guessed file from free text. */ +function shellOps(part) { + const command = typeof part.command === 'string' ? part.command : '' + if (!command || command.includes('\n') || /<<-?\s*['"]?\w/.test(command)) return [] + const ops = [] + const detail = oneLineOf(command, 180) + const add = (kind, path) => { + const value = barePath(path) + if (!value || value.startsWith('-') || /^[|&;<>]/.test(value)) return + ops.push({ kind, path: value, tool: 'Bash', detail, est: true }) + } + for (const match of command.matchAll(/(?:^|[;&|]\s*)(?:sudo\s+)?(?:rg|grep)\s+([^;&|]+)/g)) { + const args = match[1].split(/\s+/).filter(Boolean) + const pattern = args.find((arg) => !arg.startsWith('-') && !arg.includes('=')) + const paths = args.filter((arg) => !arg.startsWith('-') && arg !== pattern) + if (pattern && paths.length > 0) for (const path of paths) add('search', path) + else if (pattern && /\s(-r|--recursive)\b/.test(match[0])) add('search', '.') + } + for (const match of command.matchAll(/(?:^|[;&|]\s*)(?:sudo\s+)?(?:cat|head|tail|less|more|bat)\s+([^;&|]+)/g)) { + const args = match[1].split(/\s+/).filter((arg) => !arg.startsWith('-')) + for (const path of args) add('read', path.replace(/^['"]|['"]$/g, '')) + } + for (const match of command.matchAll(/(?:^|[;&|]\s*)(?:sudo\s+)?sed\s+(?:-n\s+)?(?:['"][^'"]+['"]\s+)?([^;&|]+)/g)) { + const args = match[1].split(/\s+/).filter((arg) => !arg.startsWith('-') && !/^\d+(,\d+)?p?$/.test(arg)) + for (const path of args) add('read', path.replace(/^['"]|['"]$/g, '')) + } + for (const match of command.matchAll(/(?:^|[;&|]\s*)(?:sudo\s+)?tee\s+(?:-a\s+)?([^;&|]+)/g)) { + for (const path of match[1].split(/\s+/).filter((arg) => !arg.startsWith('-'))) add('write', path) + } + for (const match of command.matchAll(/(?:^|[^<])(?:>>?)\s*([^\s;&|]+)/g)) { + if (!/[12]?>&/.test(match[0])) add('write', match[1]) + } + return ops +} + +/** One record per executed file op. */ +export function buildFileOps(conversation) { + const ops = [] + for (const part of conversation.parts) { + if (part.type !== 'tool') continue + const message = conversation.messageMap.get(part.message_id) + if (!message || message.visibility === 'hidden') continue + const seq = message.sequence ?? Number.MAX_SAFE_INTEGER + const time = part.tool_end ?? part.tool_start ?? part.time_created + const base = { + seq, + time, + err: part.status === 'error', + key: 'p:' + part.id + ':result', + partId: part.id, + messageId: message.id, + toolCallId: part.call_id ?? null, + } + const tool = String(part.tool ?? '') + const path = pathFromInput(part) + if (tool === 'Read' && path) { + ops.push({ + ...base, + path, + kind: 'read', + tool, + added: 0, + removed: 0, + read: { + start: Number(part.read_offset) > 0 ? Number(part.read_offset) : undefined, + count: Number(part.output_lines) > 0 ? Number(part.output_lines) : undefined, + }, + }) + continue + } + if (tool === 'Write' && path) { + ops.push({ + ...base, + path, + kind: 'write', + tool, + added: finiteNumber(part.additions) ?? (Number(part.write_lines) || 0), + removed: finiteNumber(part.deletions) ?? 0, + }) + continue + } + if (tool === 'Edit' && path) { + ops.push({ + ...base, + path, + kind: 'write', + tool, + added: finiteNumber(part.additions) ?? (Number(part.edit_new_lines) || 0), + removed: finiteNumber(part.deletions) ?? (Number(part.edit_old_lines) || 0), + diff: true, + }) + continue + } + if (tool === 'MultiEdit' && path) { + ops.push({ + ...base, + path, + kind: 'write', + tool, + added: finiteNumber(part.additions) ?? 0, + removed: finiteNumber(part.deletions) ?? 0, + diff: true, + }) + continue + } + if (tool === 'Grep' && path) { + ops.push({ ...base, path, kind: 'search', tool, added: 0, removed: 0, detail: part.pattern ?? undefined }) + continue + } + if (tool === 'Glob' && path) { + ops.push({ ...base, path, kind: 'search', tool, added: 0, removed: 0, detail: part.pattern ?? undefined, pattern: true }) + continue + } + if (tool === 'Bash') { + for (const op of shellOps(part)) ops.push({ ...base, ...op }) + } + } + return ops +} + +function surfaceOp(op) { + return { ...op } +} + +/** Aggregate ops up to a step boundary (exclusive message sequence, or all when null). */ +export function fileActivity(conversation, beforeSeq = null) { + const ops = buildFileOps(conversation) + .filter((op) => beforeSeq === null || op.seq < beforeSeq) + .sort((a, b) => b.time - a.time || b.seq - a.seq) + const totals = { + read: { files: 0, ops: 0 }, + write: { files: 0, ops: 0 }, + search: { files: 0, ops: 0 }, + image: { files: 0, ops: 0 }, + added: 0, + removed: 0, + } + const byPath = new Map() + for (const op of ops) { + const entry = byPath.get(op.path) ?? { + path: op.path, + form: formOf(op.path, op.tool), + reads: 0, + writes: 0, + searches: 0, + added: 0, + removed: 0, + ops: [], + ...(op.pattern ? { pattern: true } : {}), + latest: op.time, + } + if (op.kind === 'read') entry.reads++ + else if (op.kind === 'write') entry.writes++ + else entry.searches++ + entry.added += Number(op.added) || 0 + entry.removed += Number(op.removed) || 0 + entry.latest = Math.max(entry.latest ?? 0, op.time ?? 0) + entry.ops.push(surfaceOp(op)) + byPath.set(op.path, entry) + totals[op.kind].ops++ + } + const entries = [...byPath.values()] + for (const entry of entries) { + entry.ops.sort((a, b) => b.time - a.time || b.seq - a.seq) + if (entry.reads > 0) totals.read.files++ + if (entry.writes > 0) totals.write.files++ + if (entry.searches > 0) totals.search.files++ + if (entry.form === 'image') { + totals.image.files++ + totals.image.ops += entry.ops.length + } + totals.added += entry.added + totals.removed += entry.removed + } + entries.sort((a, b) => (b.latest ?? 0) - (a.latest ?? 0) || a.path.localeCompare(b.path)) + return { entries, totals, opCount: ops.length } +} + +/** Display form relative to the session's workspace, keeping absolute paths verbatim. */ +export function displayPathOf(path, workspace) { + const root = typeof workspace === 'string' && workspace.length > 0 ? workspace.replace(/\/+$/, '') : '' + if (root && path === root) return './' + if (root && path.startsWith(root + '/')) return path.slice(root.length + 1) + return path +} + +const GLYPH_BY_EXT = [ + [['tsx', 'ts'], 'TS', '#3178c6'], + [['js', 'jsx', 'mjs', 'cjs'], 'JS', '#f7df1e'], + [['py', 'pyi'], 'PY', '#3572a5'], + [['go'], 'GO', '#00add8'], + [['rs'], 'RS', '#dea584'], + [['java'], 'JV', '#b07219'], + [['kt', 'kts'], 'KT', '#a97bff'], + [['rb'], 'RB', '#701516'], + [['php'], 'PHP', '#4f5d95'], + [['c', 'h'], 'C', '#555555'], + [['cpp', 'cc', 'cxx', 'hpp'], 'C++', '#f34b7d'], + [['cs'], 'C#', '#178600'], + [['sh', 'bash', 'zsh', 'fish'], 'SH', '#89e051'], + [['html', 'htm'], 'HT', '#e34c26'], + [['css', 'scss', 'sass', 'less'], 'CSS', '#563d7c'], + [['sql'], 'SQL', '#e38c00'], + [['json', 'jsonc'], '{}', '#cbcb41'], + [['md', 'mdx'], 'MD', '#519aba'], +] + +export function fileGlyph(path, form) { + if (form === 'image') return { glyph: '🖼', label: 'image' } + if (form === 'dir') return { glyph: '📁', label: 'directory' } + const name = String(path ?? '').split('/').pop()?.toLowerCase() ?? '' + if (name.endsWith('.lock') || /^(package-lock\.json|pnpm-lock\.yaml)$/.test(name)) return { glyph: '🔒', label: 'lock' } + if (/(^|[^a-z0-9])test([^a-z0-9]|$)|\.test\./.test(name)) return { glyph: '🧪', label: 'test' } + const dot = name.lastIndexOf('.') + const ext = dot > 0 ? name.slice(dot + 1) : '' + for (const [exts, label, color] of GLYPH_BY_EXT) { + if (exts.includes(ext)) return { glyph: label, label: ext, color, text: '#fff' } + } + if (CODE_EXT.test(name)) return { glyph: '⌘', label: 'code' } + return { glyph: '📄', label: ext || 'file' } +} + +export function looksLikeImage(path) { + return IMAGE_EXT.test(String(path ?? '')) +} diff --git a/ui-plugins/zcode-context-insight/src/domain/items.mjs b/ui-plugins/zcode-context-insight/src/domain/items.mjs new file mode 100644 index 0000000..35b3ddb --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/items.mjs @@ -0,0 +1,380 @@ +/** + * Build the flat, ordered list of everything a request carries: header items (system prompt and + * tool schemas) followed by every model-visible conversation element. The list is built once per + * session; each request slices it at its assistant-message boundary. + */ + +import { + estimateImageTokens, + estimateSystemContent, + estimateTextBlock, + estimateTokens, + estimateToolCall, + estimateToolSchema, + estimateToolResult, + firstLineOf, + oneLineOf, + truncate, +} from '../shared/estimate.mjs' + +const IMAGE_MIME = /^image\//i +const BUILTIN_TOOLS = new Set([ + 'Bash', 'Read', 'Write', 'Edit', 'Glob', 'Grep', 'LS', 'TodoWrite', 'TodoRead', 'Skill', + 'WebSearch', 'WebFetch', 'Task', 'Agent', 'TaskOutput', 'TaskStop', 'AskUserQuestion', + 'EnterPlanMode', 'ExitPlanMode', 'SendMessage', 'ReadSessionContext', 'ListModels', + 'CreateWorkflow', 'AmendWorkflow', 'SaveWorkflow', 'EvalWorkflowSnippet', 'ListWorkflowRuns', + 'GetWorkflowRun', 'ResumeWorkflowRun', 'ResolveWorkflowQuestion', 'FillWorkflowHole', + 'OffPeakCreate', 'OffPeakList', 'CronCreate', 'CronDelete', 'CronList', 'CronUpdate', +]) + +/** A bounded sample's token density scaled to the full recorded character count. */ +export function estimateFromChars(sample, chars) { + const length = Number(chars) + if (!Number.isFinite(length) || length <= 0) return 0 + const text = typeof sample === 'string' ? sample : '' + if (text.length === 0) return Math.ceil(length / 4) + 4 + if (length <= text.length) return estimateTokens(text.slice(0, length)) + 4 + return Math.max(1, Math.round(estimateTokens(text) * (length / text.length))) + 4 +} + +export function toolSourceOf(name) { + const value = String(name ?? '') + if (value.startsWith('mcp__')) { + const rest = value.slice(5) + const split = rest.lastIndexOf('__') + return 'mcp:' + (split > 0 ? rest.slice(0, split) : rest) + } + return BUILTIN_TOOLS.has(value) ? 'built-in' : 'plugin' +} + +export function summaryOfPart(part) { + const keys = ['file_path', 'read_path', 'input_path', 'path'] + for (const key of keys) { + const value = part[key] + if (typeof value === 'string' && value) return value + } + if (typeof part.pattern === 'string' && part.pattern) { + return part.input_path ? part.pattern + ' · ' + part.input_path : part.pattern + } + if (typeof part.description === 'string' && part.description.trim()) return oneLineOf(part.description, 120) + if (typeof part.command === 'string' && part.command.trim()) return oneLineOf(part.command.split('\n')[0], 120) + if (typeof part.skill === 'string' && part.skill) return part.skill + if (typeof part.query === 'string' && part.query) return oneLineOf(part.query, 120) + if (typeof part.url === 'string' && part.url) return oneLineOf(part.url, 120) + if (typeof part.input_name === 'string' && part.input_name) return oneLineOf(part.input_name, 120) + if (typeof part.prompt === 'string' && part.prompt) return oneLineOf(part.prompt, 120) + return firstLineOf(part.input_sample, 120) +} + +function partCount(part) { + return { + chars: Math.max(0, Number(part.text_chars ?? 0) + Number(part.output_chars ?? 0) + Number(part.input_chars ?? 0)), + textChars: Math.max(0, Number(part.text_chars ?? 0)), + outputChars: Math.max(0, Number(part.output_chars ?? 0)), + inputChars: Math.max(0, Number(part.input_chars ?? 0)), + } +} + +const isInjectedMessage = (message) => { + const kind = String(message.kind ?? '') + const origin = String(message.origin ?? '') + return ( + message.synthetic === 1 || + kind === 'system_reminder' || + kind === 'todo_reminder' || + kind === 'agent_listing_delta' || + kind === 'compact_summary' || + origin === 'agent_runtime' && message.role === 'user' + ) +} + +function injectionForm(message) { + const kind = String(message.kind ?? '') + if (kind === 'compact_summary') return 'compaction' + if (kind === 'todo_reminder') return 'todo' + if (kind === 'system_reminder') return 'reminder' + if (kind === 'agent_listing_delta') return 'agents' + return kind || 'context' +} + +/** + * Build one item per model-visible content element. `baseSeq` is the message sequence used to + * slice this element into a request; parts inherit their message's sequence. + */ +export function buildConversationItems(conversation) { + const items = [] + const active = conversation.branch + let order = 1000 + const messages = [...conversation.messages].sort( + (a, b) => + (a.sequence ?? Number.MAX_SAFE_INTEGER) - (b.sequence ?? Number.MAX_SAFE_INTEGER) || + a.time_created - b.time_created || + a.id.localeCompare(b.id), + ) + + for (const [messageIndex, message] of messages.entries()) { + if (message.visibility === 'hidden') continue + if (active !== null && message.sequence != null && !active.has(message.sequence)) continue + if (message.kind === 'timeline_event') continue + const seq = message.sequence ?? 1_000_000 + messageIndex + const parts = conversation.byMessage.get(message.id) ?? [] + const injected = isInjectedMessage(message) + const compactSummary = message.kind === 'compact_summary' + const role = message.role + let messageOverheadUsed = false + const overhead = () => { + if (messageOverheadUsed) return 0 + messageOverheadUsed = true + return 4 + } + + let emittedText = false + for (const part of parts) { + const counts = partCount(part) + if (part.type === 'text' && Number(part.text_chars ?? 0) > 0) { + const text = String(part.text_preview ?? '') + const cat = compactSummary || injected ? 'inject' : role === 'user' ? 'user' : 'assistant' + const kind = compactSummary ? 'compaction' : injected ? 'injection' : role === 'user' ? 'prompt' : 'answer' + items.push({ + key: 'p:' + part.id, + cat, + kind, + tokens: estimateFromChars(text, counts.textChars) + overhead(), + chars: counts.textChars, + title: compactSummary ? 'Compaction summary' : firstLineOf(text, 160) || (role === 'user' ? 'User message' : 'Assistant reply'), + preview: oneLineOf(text, 240), + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: message.time_created, + role, + messageKind: message.kind, + source: message.source ?? message.metadata_source ?? null, + form: compactSummary ? 'compaction' : injected ? injectionForm(message) : null, + synthetic: message.synthetic === 1, + lineCount: Number(part.output_lines ?? 0) || undefined, + }) + emittedText = true + continue + } + + if (part.type === 'reasoning' && Number(part.text_chars ?? 0) > 0) { + const text = String(part.text_preview ?? '') + items.push({ + key: 'p:' + part.id, + cat: 'assistant', + kind: 'thinking', + tokens: estimateFromChars(text, counts.textChars) + overhead(), + chars: counts.textChars, + title: 'Thinking', + preview: oneLineOf(text, 240), + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: message.time_created, + role, + messageKind: message.kind, + }) + continue + } + + if (part.type === 'tool') { + const tool = String(part.tool ?? 'tool') + const summary = summaryOfPart(part) + const title = summary ? tool + ' · ' + summary : tool + const callTokens = estimateTokens(tool) + estimateFromChars(part.input_sample, counts.inputChars) + 4 + const resultTokens = estimateFromChars(part.output_preview, counts.outputChars) + if (tool === 'Skill') { + const skill = typeof part.skill === 'string' && part.skill ? part.skill : summary || 'skill' + items.push({ + key: 'p:' + part.id + ':skill', + cat: 'skill', + kind: 'skill', + tokens: callTokens + resultTokens + overhead(), + chars: counts.inputChars + counts.outputChars, + title: 'Skill · ' + skill, + preview: oneLineOf(part.input_sample, 200) || skill, + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: part.tool_end ?? message.time_created, + role, + tool, + skill, + status: part.status ?? null, + toolCallId: part.call_id ?? null, + }) + continue + } + items.push({ + key: 'p:' + part.id + ':call', + cat: 'assistant', + kind: 'tool-call', + tokens: callTokens + overhead(), + chars: counts.inputChars + tool.length, + title: 'Tool call · ' + title, + preview: oneLineOf(part.input_sample, 240), + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: part.tool_start ?? message.time_created, + role, + tool, + toolCallId: part.call_id ?? null, + status: part.status ?? null, + source: toolSourceOf(tool), + }) + if (counts.outputChars > 0 || part.output_preview) { + items.push({ + key: 'p:' + part.id + ':result', + cat: 'tool', + kind: 'tool-result', + tokens: resultTokens, + chars: counts.outputChars, + title: 'Tool result · ' + title, + preview: oneLineOf(part.output_preview, 240), + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: part.tool_end ?? message.time_updated ?? message.time_created, + role, + tool, + toolCallId: part.call_id ?? null, + status: part.status ?? null, + err: part.status === 'error', + source: toolSourceOf(tool), + lineCount: Number(part.output_lines ?? 0) || undefined, + }) + } + continue + } + + if (part.type === 'file') { + const width = Number(part.image_width ?? part.image_ow ?? 0) + const height = Number(part.image_height ?? part.image_oh ?? 0) + const image = IMAGE_MIME.test(String(part.mime ?? '')) + const tokens = image ? estimateImageTokens(width, height) ?? 320 : 32 + items.push({ + key: 'p:' + part.id, + cat: role === 'user' ? 'user' : 'tool', + kind: image ? 'image' : 'attachment', + tokens: tokens + overhead(), + chars: 0, + title: image ? 'Image' : 'Attachment', + preview: width && height ? width + '×' + height : String(part.mime ?? ''), + messageId: message.id, + partId: part.id, + messageSeq: seq, + order: order++, + time: message.time_created, + role, + mime: part.mime ?? null, + images: image ? 1 : 0, + imageWidth: width || null, + imageHeight: height || null, + bytes: Number(part.image_bytes ?? part.read_size ?? 0) || null, + }) + continue + } + } + + // A compaction summary may have no text part (or a text part that the retention window + // trimmed): its summary body is still model-visible context. + if (compactSummary && !emittedText && Number(message.summary_chars ?? 0) > 0) { + const text = String(message.summary_preview ?? '') + items.push({ + key: 'm:' + message.id + ':summary', + cat: 'inject', + kind: 'compaction', + tokens: estimateFromChars(text, Number(message.summary_chars ?? 0)) + 4, + chars: Number(message.summary_chars ?? 0), + title: message.summary_title || 'Compaction summary', + preview: oneLineOf(text, 240), + messageId: message.id, + partId: null, + messageSeq: seq, + order: order++, + time: message.time_created, + role, + messageKind: message.kind, + source: message.source ?? null, + form: 'compaction', + }) + } + } + return items +} + +function toolNameOf(tool) { + return ( + tool?.function?.name ?? + tool?.name ?? + tool?.toolName ?? + tool?.function?.name ?? + null + ) +} + +function toolDescriptionOf(tool) { + return tool?.function?.description ?? tool?.description ?? '' +} + +/** Header items: one system-prompt element and one item per tool schema. */ +export function buildHeaderItems(record) { + const items = [] + if (!record) return { items, tokens: 0, known: false, maxOutputTokens: null } + const system = record.header?.system + let systemText = '' + if (typeof system === 'string') systemText = system + else if (Array.isArray(system)) { + systemText = system + .map((block) => (typeof block === 'string' ? block : block?.type === 'text' ? block.text ?? '' : '')) + .filter(Boolean) + .join('\n\n') + } + if (systemText) { + items.push({ + key: 'sys', + cat: 'system', + kind: 'system', + tokens: estimateSystemContent(system), + chars: systemText.length, + title: 'System prompt', + preview: oneLineOf(systemText, 240), + order: 0, + header: true, + text: systemText, + }) + } + const tools = Array.isArray(record.header?.tools) ? record.header.tools : [] + let order = 1 + for (const tool of tools) { + const name = toolNameOf(tool) ?? 'tool' + items.push({ + key: 't:' + name + ':' + order, + cat: 'tools', + kind: 'schema', + tokens: estimateToolSchema(tool), + chars: JSON.stringify(tool).length, + title: name, + preview: oneLineOf(toolDescriptionOf(tool), 220), + order: order++, + header: true, + tool: name, + source: toolSourceOf(name), + value: tool, + }) + } + return { + items, + tokens: items.reduce((sum, item) => sum + item.tokens, 0), + known: true, + maxOutputTokens: record.header?.maxOutputTokens ?? null, + record, + } +} diff --git a/ui-plugins/zcode-context-insight/src/domain/session.mjs b/ui-plugins/zcode-context-insight/src/domain/session.mjs new file mode 100644 index 0000000..b6ad360 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/domain/session.mjs @@ -0,0 +1,43 @@ +import { ContextError } from './errors.mjs' + +const SESSION_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$/ + +/** + * The ONLY authority for which session a panel call belongs to: the host's namespaced request + * metadata. An MCP transport id, a widget-state value or a browser-storage value never grants a + * session. Missing metadata fails closed. + */ +export function readSessionContext(meta) { + const value = meta?.['com.zcode/request-context'] + const sessionId = value?.session_id + if (typeof sessionId !== 'string' || !SESSION_ID.test(sessionId)) { + throw new ContextError('binding_unavailable', 'Host session metadata is missing or invalid.') + } + return Object.freeze({ sessionId }) +} + +export function sanitizeSessionSegment(value) { + return String(value ?? '') + .replace(/[^a-zA-Z0-9_-]+/g, '-') + .replace(/^-+|-+$/g, '') + .slice(0, 80) +} + +export function nonnegative(value) { + return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null +} + +export const AGENT_SOURCES = new Set(['main_turn', 'subagent', 'workflow_child']) + +export function isAgentSource(value) { + return AGENT_SOURCES.has(value) +} + +export function toMs(value) { + if (typeof value === 'number' && Number.isFinite(value)) return value + if (typeof value === 'string') { + const parsed = Date.parse(value) + if (Number.isFinite(parsed)) return parsed + } + return 0 +} diff --git a/ui-plugins/zcode-context-insight/src/server.mjs b/ui-plugins/zcode-context-insight/src/server.mjs new file mode 100644 index 0000000..725e3a6 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/server.mjs @@ -0,0 +1,331 @@ +/** + * stdio MCP server for the zcode-context-insight panel. + * + * The host binds every call to a session through `_meta["com.zcode/request-context"]`; the panel is + * generic HTML and obtains the bound session by calling an app-only tool. Reads run in a worker so + * a large session can never block the MCP protocol channel. + */ + +import { readFile } from 'node:fs/promises' +import { Worker } from 'node:worker_threads' +import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' +import { z } from 'zod' +import { resolvePaths } from './data/paths.mjs' +import { ContextError } from './domain/errors.mjs' +import { readSessionContext } from './domain/session.mjs' + +const RESOURCE_URI = 'ui://zcode-context-insight/context.html' +const VERSION = '0.1.0' +const READ_TIMEOUT_MS = 30_000 + +class Reader { + constructor() { + this.worker = null + this.pending = new Map() + this.sequence = 0 + } + + start() { + if (this.worker) return this.worker + const worker = new Worker(new URL('./worker.mjs', import.meta.url), { + workerData: { paths: resolvePaths() }, + resourceLimits: { maxOldGenerationSizeMb: 512 }, + }) + worker.on('message', (message) => { + if (this.worker !== worker) return + const job = this.pending.get(message.id) + if (!job) return + this.pending.delete(message.id) + clearTimeout(job.timer) + job.signal?.removeEventListener('abort', job.abort) + if (message.error) job.reject(new ContextError(message.error.code ?? 'read_failed', message.error.message ?? 'Read failed.')) + else job.resolve(message.result) + }) + const fail = (error) => { + if (this.worker !== worker) return + this.worker = null + for (const job of this.pending.values()) { + clearTimeout(job.timer) + job.reject(new ContextError('worker_unavailable', 'The context data worker stopped.')) + } + this.pending.clear() + if (error) console.error('[zcode-context-insight] worker error', error) + } + worker.on('error', fail) + worker.on('exit', () => fail(null)) + this.worker = worker + return worker + } + + async run(method, sessionId, args, signal) { + if (signal?.aborted) throw new ContextError('cancelled', 'Read cancelled.') + const worker = this.start() + const id = ++this.sequence + return new Promise((resolve, reject) => { + const abort = () => { + const job = this.pending.get(id) + if (!job) return + this.pending.delete(id) + clearTimeout(job.timer) + if (this.worker === worker) worker.postMessage({ cancel: id }) + reject(new ContextError('cancelled', 'Read cancelled.')) + } + const timer = setTimeout(() => { + const job = this.pending.get(id) + if (!job) return + this.pending.delete(id) + if (this.worker === worker) worker.postMessage({ cancel: id }) + reject(new ContextError('read_timeout', 'The context read took too long.')) + }, READ_TIMEOUT_MS) + signal?.addEventListener('abort', abort, { once: true }) + this.pending.set(id, { resolve, reject, timer, signal, abort }) + worker.postMessage({ id, method, sessionId, args }) + }) + } + + async close() { + const worker = this.worker + this.worker = null + for (const job of this.pending.values()) { + clearTimeout(job.timer) + job.reject(new ContextError('worker_unavailable', 'The context data worker stopped.')) + } + this.pending.clear() + await worker?.terminate() + } +} + +const reader = new Reader() + +function wrap(method, { requiresSession = true } = {}) { + return async (args, extra) => { + try { + const sessionId = requiresSession ? readSessionContext(extra?._meta)?.sessionId ?? null : null + const result = await reader.run(method, sessionId, args ?? {}, extra?.signal) + return { content: [], structuredContent: result } + } catch (error) { + const contextError = error instanceof ContextError ? error : new ContextError('read_failed', 'Context data is unavailable.') + if (!(error instanceof ContextError)) console.error('[zcode-context-insight]', method, error) + return { + isError: true, + content: [{ type: 'text', text: contextError.message }], + structuredContent: { error: { code: contextError.code, message: contextError.message } }, + } + } + } +} + +const annotations = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false } +const appOnly = (description, inputSchema) => ({ + description, + inputSchema, + annotations, + _meta: { ui: { visibility: ['app'] } }, +}) + +export function createServer() { + const server = new McpServer( + { name: 'zcode-context-insight', version: VERSION }, + { + instructions: + 'Read-only local context insights for a ZCode session. Prefer the Context panel in the session side pane; get_context_report returns a compact text report for the current session.', + }, + ) + + server.registerResource( + 'context_panel', + RESOURCE_URI, + { + mimeType: 'text/html;profile=mcp-app', + _meta: { ui: { csp: { connectDomains: [], resourceDomains: [] } } }, + }, + async () => ({ + contents: [ + { + uri: RESOURCE_URI, + mimeType: 'text/html;profile=mcp-app', + text: await readFile(new URL('./context.html', import.meta.url), 'utf8'), + }, + ], + }), + ) + + const locale = z.string().max(24).optional() + + server.registerTool( + 'get_context_snapshot', + appOnly('App-only: the bound session summary, compact request trend, current composition, events and file activity.', { + locale, + }), + wrap('snapshot'), + ) + + server.registerTool( + 'get_context_history', + appOnly('App-only: earlier compact request rows for the bound session.', { + beforeStep: z.number().int().min(0).max(1_000_000).optional(), + limit: z.number().int().min(1).max(260).optional(), + locale, + }), + wrap('history'), + ) + + server.registerTool( + 'get_context_step', + appOnly('App-only: category groups, diff, step brief, DNA order and files for one recorded request.', { + step: z.number().int().min(1).max(1_000_000), + baselineMode: z.enum(['step', 'turn']).optional(), + search: z.string().max(200).optional(), + sort: z.enum(['size', 'order', 'name', 'calls']).optional(), + locale, + }), + wrap('step'), + ) + + server.registerTool( + 'get_context_group', + appOnly('App-only: one category page for a request, with search and sorting.', { + step: z.number().int().min(1).max(1_000_000), + cat: z.enum(['system', 'tools', 'user', 'inject', 'skill', 'assistant', 'tool', 'unknown']), + offset: z.number().int().min(0).max(1_000_000).optional(), + limit: z.number().int().min(1).max(60).optional(), + search: z.string().max(200).optional(), + sort: z.enum(['size', 'order', 'name', 'calls']).optional(), + locale, + }), + wrap('group'), + ) + + server.registerTool( + 'get_context_dna', + appOnly('App-only: the flattened prompt-order element list for one request.', { + step: z.number().int().min(1).max(1_000_000), + offset: z.number().int().min(0).max(1_000_000).optional(), + limit: z.number().int().min(1).max(200).optional(), + locale, + }), + wrap('dna'), + ) + + server.registerTool( + 'get_context_dna_series', + appOnly('App-only: compact per-request DNA band series for the trend bars.', { + fromStep: z.number().int().min(1).max(1_000_000).optional(), + toStep: z.number().int().min(1).max(1_000_000).optional(), + maxBands: z.number().int().min(8).max(80).optional(), + locale, + }), + wrap('dnaSeries'), + ) + + server.registerTool( + 'get_context_element', + appOnly('App-only: full content of one context element, chunked.', { + step: z.number().int().min(1).max(1_000_000), + key: z.string().min(1).max(300), + format: z.enum(['readable', 'raw']).optional(), + offset: z.number().int().min(0).max(100_000_000).optional(), + limit: z.number().int().min(1).max(24_000).optional(), + locale, + }), + wrap('element'), + ) + + server.registerTool( + 'get_context_event', + appOnly('App-only: the summarized messages behind a compaction event.', { + eventId: z.string().min(1).max(300), + offset: z.number().int().min(0).max(100_000).optional(), + limit: z.number().int().min(1).max(20).optional(), + locale, + }), + wrap('eventDetail'), + ) + + server.registerTool( + 'get_context_fleet', + appOnly('App-only: the current agent family tree, usage and status.', { locale }), + wrap('fleet'), + ) + + server.registerTool( + 'get_context_fleet_member', + appOnly('App-only: detail for one agent in the current family.', { + targetId: z.string().min(1).max(300), + locale, + }), + wrap('fleetMember'), + ) + + server.registerTool( + 'get_context_insights', + appOnly('App-only: cross-session usage, daily activity, session cards and aggregate composition.', { + range: z.enum(['7d', '30d', 'all']).optional(), + includeComposition: z.boolean().optional(), + locale, + }), + wrap('insights'), + ) + + server.registerTool( + 'get_context_preferences', + appOnly('App-only: this plugin\'s persisted display preferences.', {}), + wrap('preferencesGet'), + ) + + server.registerTool( + 'set_context_preferences', + { + description: 'App-only: persist this plugin\'s display preferences.', + inputSchema: { patch: z.record(z.string(), z.unknown()) }, + annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }, + _meta: { ui: { visibility: ['app'] } }, + }, + wrap('preferencesSet'), + ) + + server.registerTool( + 'get_context_report', + { + description: + 'Read-only: a compact context report for the current ZCode session (current prompt composition, session counts, recent injections/compactions, coverage). Use when the user asks what is in the context window or types /context.', + inputSchema: {}, + annotations, + _meta: { ui: { visibility: ['model', 'app'] } }, + }, + async (args, extra) => { + try { + const { sessionId } = readSessionContext(extra?._meta) + const result = await reader.run('report', sessionId, {}, extra?.signal) + return { + content: [{ type: 'text', text: result.text }], + structuredContent: result, + } + } catch (error) { + const contextError = error instanceof ContextError ? error : new ContextError('read_failed', 'Context data is unavailable.') + if (!(error instanceof ContextError)) console.error('[zcode-context-insight] report', error) + return { isError: true, content: [{ type: 'text', text: contextError.message }] } + } + }, + ) + + return server +} + +const server = createServer() +await server.connect(new StdioServerTransport()) + +let closing = false +async function shutdown() { + if (closing) return + closing = true + setTimeout(() => process.exit(0), 2000).unref() + await server.close().catch(() => {}) + await reader.close().catch(() => {}) + process.exit(0) +} +process.on('SIGINT', shutdown) +process.on('SIGTERM', shutdown) +process.stdin.once('end', shutdown) +process.stdin.once('close', shutdown) diff --git a/ui-plugins/zcode-context-insight/src/service.mjs b/ui-plugins/zcode-context-insight/src/service.mjs new file mode 100644 index 0000000..d36771e --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/service.mjs @@ -0,0 +1,831 @@ +/** + * The panel's data service. One read-only SQLite connection, one cached session view per revision. + * Heavy collections stay in this process; every MCP result is fitted to the host's 64 KiB budget. + */ + +import { + openDatabase, + readChildrenSessions, + readConversation, + readFullRetention, + readFleetSessions, + readInsights, + readInsightsDailyModel, + readLatestUsageForSessions, + readProviderWindows, + readSessionPreview, + readSessionRow, + readToolRows, + readTurnRows, + readUsageForSessions, + readUsageRows, +} from './data/db.mjs' +import { readPreferences, writePreferences } from './data/preferences.mjs' +import { readRollout, rolloutStamp } from './data/rollout.mjs' +import { buildDnaDetail, buildDnaSeries, buildGroupDetail, buildReport, buildSessionView, buildStepDetail } from './domain/compose.mjs' +import { readElementDetail, readEventDetail } from './domain/detail.mjs' +import { ContextError } from './domain/errors.mjs' +import { currencyForLocale, priceCall, resolveModel } from './shared/pricing.mjs' +import { formatTokens } from './shared/estimate.mjs' + +export const PART_ORDER = ['system', 'tools', 'user', 'inject', 'skill', 'assistant', 'tool', 'unknown'] +const STATUS_CODES = { completed: 0, running: 1, error: 2, cancelled: 3, unknown: 4 } +const HEADER_CODES = { exact: 0, estimated: 1, missing: 2 } +const MAX_PAYLOAD_BYTES = 58 * 1024 + +function payloadBytes(value) { + return Buffer.byteLength(JSON.stringify(value), 'utf8') +} + +function statusCode(status) { + return STATUS_CODES[status] ?? STATUS_CODES.unknown +} + +function headerCode(request) { + if (request.headerMissing) return HEADER_CODES.missing + return request.headerEstimated ? HEADER_CODES.estimated : HEADER_CODES.exact +} + +function compactRequest(request) { + return [ + request.step, + request.turn, + request.time, + Math.round(request.prompt), + Math.round(request.output), + Math.round(request.cacheRead), + Math.round(request.cacheWrite), + request.durationMs ?? 0, + request.ttftMs ?? 0, + request.toolCalls ?? 0, + statusCode(request.status), + PART_ORDER.map((cat) => Math.round(request.parts?.[cat] ?? 0)), + headerCode(request), + ] +} + +function safeName(value, max = 240) { + const text = String(value ?? '') + return text.length > max ? text.slice(0, max) : text +} + +function compactEvents(events, limit) { + return events.slice(-limit).map((event) => { + const out = { id: event.id, kind: event.kind, time: event.time } + const put = (key, value) => { + if (value != null && value !== '') out[key] = typeof value === 'string' ? safeName(value, 160) : value + } + put('status', event.status) + put('trigger', event.trigger) + put('from', event.from) + put('to', event.to) + put('name', event.name) + put('form', event.form) + put('sub', event.sub) + put('tokens', event.tokens) + put('delta', event.delta) + put('summarizedCount', event.summarizedCount) + put('keptCount', event.keptCount) + put('preTokens', event.preTokens) + put('postTokens', event.postTokens) + put('durationMs', event.durationMs) + put('turn', event.turn) + put('step', event.step) + put('itemKey', event.itemKey) + put('text', event.text) + put('detail', event.detail) + return out + }) +} + +function sessionInfoOf(view) { + return { + id: view.session.id, + title: safeName(view.session.title, 300), + directory: view.session.directory, + projectId: view.session.projectId, + parentId: view.session.parentId, + taskType: view.session.taskType, + createdAt: view.session.createdAt, + updatedAt: view.session.updatedAt, + model: view.session.model, + provider: view.session.provider, + contextWindow: view.session.contextWindow, + contextWindowSource: view.session.contextWindowSource, + maxOutputTokens: view.session.maxOutputTokens, + currency: view.session.currency, + } +} + +function summarizeStats(view) { + const { timing, ...stats } = view.stats + stats.skillNames = (stats.skillNames ?? []).slice(0, 20) + return stats +} + +function encodeSnapshot(view, { requestLimit = 260, eventLimit = 120, fileLimit = 120 } = {}) { + const total = view.requests.length + let shown = Math.min(total, requestLimit) + let events = Math.min(view.events.length, eventLimit) + let files = Math.min(view.files.entries.length, fileLimit) + let payload + for (;;) { + const from = Math.max(0, total - shown) + payload = { + wire: { parts: PART_ORDER, status: STATUS_CODES, header: HEADER_CODES }, + session: sessionInfoOf(view), + stats: summarizeStats(view), + current: view.current, + timing: { ...view.timing, spans: (view.timing?.spans ?? []).slice(0, 120) }, + coverage: view.coverage, + preferences: view.preferences, + requests: view.requests.slice(from).map(compactRequest), + requestsTotal: total, + requestsFrom: total === 0 ? 0 : from + 1, + requestsTo: total, + events: compactEvents(view.events, events), + eventsTotal: view.events.length, + files: { + totals: view.files.totals, + opCount: view.files.opCount, + entries: view.files.entries.slice(0, files), + truncated: view.files.entries.length > files, + }, + generatedAt: view.generatedAt, + } + if (payloadBytes(payload) <= MAX_PAYLOAD_BYTES) break + if (shown > 60) shown = Math.max(60, Math.floor(shown * 0.8)) + else if (events > 30) events = Math.max(30, Math.floor(events * 0.8)) + else if (files > 20) files = Math.max(20, Math.floor(files * 0.8)) + else break + } + return payload +} + +function fitStep(detail) { + if (!detail) return detail + let groupCap = 24 + let dnaCap = 120 + let diffCap = 50 + let fileCap = 50 + let opsCap = 20 + let dropDna = false + let out + for (;;) { + out = { + ...detail, + groups: detail.groups.map((group) => ({ + ...group, + items: group.items.slice(0, groupCap), + more: Math.max(group.more + Math.max(0, group.items.length - groupCap), 0), + })), + dna: dropDna ? [] : detail.dna.slice(0, dnaCap), + dnaTotal: detail.dna.length, + diff: { + ...detail.diff, + added: (detail.diff.added ?? []).slice(0, diffCap), + removed: (detail.diff.removed ?? []).slice(0, diffCap), + changed: (detail.diff.changed ?? []).slice(0, 20), + }, + files: { + ...detail.files, + entries: detail.files.entries.slice(0, fileCap).map((entry) => ({ + ...entry, + ops: (entry.ops ?? []).slice(0, opsCap), + })), + truncated: detail.files.truncated || detail.files.entries.length > fileCap || detail.files.entries.some((entry) => (entry.ops?.length ?? 0) > opsCap), + }, + } + if (payloadBytes(out) <= MAX_PAYLOAD_BYTES) break + if (groupCap > 6) groupCap = Math.max(6, groupCap - 4) + else if (!dropDna && detail.dna.length > 0) dropDna = true + else if (fileCap > 6) fileCap = Math.max(6, fileCap - 4) + else if (opsCap > 5) opsCap = Math.max(5, opsCap - 5) + else if (diffCap > 10) diffCap = Math.max(10, diffCap - 10) + else break + } + return out +} + +function fitPagedItems(result, key, minimum = 20) { + if (!result) return result + while (payloadBytes(result) > MAX_PAYLOAD_BYTES && (result[key]?.length ?? 0) > minimum) { + const keep = Math.max(minimum, Math.floor(result[key].length * 0.75)) + result[key] = result[key].slice(0, keep) + result.nextOffset = (result.offset ?? 0) + keep + result.more = Math.max(0, (result.total ?? keep) - (result.offset ?? 0) - keep) + result.truncated = true + } + return result +} + +function fitInsights(data) { + const total = data.sessionCards.length + let cards = Math.min(total, 140) + let daily = Math.min(data.daily.length, 400) + let out + for (;;) { + out = { + ...data, + sessionCards: data.sessionCards.slice(0, cards), + sessionsTotal: total, + truncated: cards < total, + daily: data.daily.slice(-daily), + dailyTotal: data.daily.length, + } + if (payloadBytes(out) <= MAX_PAYLOAD_BYTES) break + if (cards > 40) cards = Math.max(40, Math.floor(cards * 0.8)) + else if (daily > 56) daily = Math.max(56, Math.floor(daily * 0.8)) + else break + } + return out +} + +function currencyFor(preferences, locale) { + return currencyForLocale( + preferences?.language && preferences.language !== 'auto' ? preferences.language : locale, + preferences?.currency, + ) +} + +function emptyUsage() { + return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, billed: 0, cost: null, unpriced: 0 } +} + +function addUsage(total, row, cost, calls = 1) { + total.input += Number(row.input_tokens) || 0 + total.output += Number(row.output_tokens) || 0 + total.cacheRead += Number(row.cache_read_input_tokens) || 0 + total.cacheWrite += Number(row.cache_creation_input_tokens) || 0 + if (cost != null) total.cost = (total.cost ?? 0) + cost + else if ((Number(row.input_tokens) || 0) + (Number(row.output_tokens) || 0) > 0) total.unpriced++ + total.calls = (total.calls ?? 0) + (Number(calls) || 0) + total.billed = total.input + total.output + return total +} + +export function createService(paths) { + const db = openDatabase(paths.dbPath) + const cache = new Map() + let providerWindows = readProviderWindows(paths.providerConfigPath) + let providerLoadedAt = Date.now() + + function refreshProviderWindows() { + if (Date.now() - providerLoadedAt > 30_000) { + providerWindows = readProviderWindows(paths.providerConfigPath) + providerLoadedAt = Date.now() + } + return providerWindows + } + + async function revisionOf(sessionId) { + const session = db.prepare('SELECT time_updated FROM session WHERE id = ?').get(sessionId) + const messages = db + .prepare('SELECT count(*) AS n, COALESCE(max(time_updated),0) AS u FROM message WHERE session_id = ?') + .get(sessionId) + const parts = db + .prepare('SELECT count(*) AS n, COALESCE(max(time_updated),0) AS u FROM part WHERE session_id = ?') + .get(sessionId) + const usage = db + .prepare('SELECT count(*) AS n, COALESCE(max(COALESCE(completed_at, started_at)),0) AS u FROM model_usage WHERE session_id = ?') + .get(sessionId) + const tools = db.prepare('SELECT count(*) AS n, COALESCE(max(COALESCE(completed_at, started_at)),0) AS u FROM tool_usage WHERE session_id = ?').get(sessionId) + const children = db + .prepare('SELECT count(*) AS n, COALESCE(max(time_updated),0) AS u FROM session WHERE parent_id = ?') + .get(sessionId) + const rollout = await rolloutStamp(paths, sessionId) + return [ + session?.time_updated ?? 0, + messages?.n ?? 0, + messages?.u ?? 0, + parts?.n ?? 0, + parts?.u ?? 0, + usage?.n ?? 0, + usage?.u ?? 0, + tools?.n ?? 0, + tools?.u ?? 0, + children?.n ?? 0, + children?.u ?? 0, + rollout, + ].join('|') + } + + async function ensureView(sessionId, { withSubagents = true, locale = '' } = {}) { + const basePreferences = readPreferences(paths) + const preferences = locale ? { ...basePreferences, locale } : basePreferences + const cacheKey = sessionId + ':' + (withSubagents ? 'family' : 'self') + const revision = (await revisionOf(sessionId)) + '|' + JSON.stringify(preferences) + const hit = cache.get(cacheKey) + if (hit && hit.revision === revision) return hit + const session = readSessionRow(db, sessionId) + const usageRows = readUsageRows(db, sessionId) + const toolRows = readToolRows(db, sessionId) + const turnRows = readTurnRows(db, sessionId) + const conversation = readConversation(db, sessionId) + const rollout = await readRollout(paths, sessionId) + const fullRetention = readFullRetention(paths.settingPath) + const windows = refreshProviderWindows() + let subagentStats = { count: 0, usage: null } + if (withSubagents) { + const family = readFleetSessions(db, sessionId) + const descendants = new Set() + const queue = [sessionId] + while (queue.length) { + const parent = queue.shift() + for (const candidate of family.sessions) { + if (candidate.parent_id === parent && !descendants.has(candidate.id)) { + descendants.add(candidate.id) + queue.push(candidate.id) + } + } + } + const children = family.sessions.filter((session) => descendants.has(session.id)) + if (children.length > 0) { + const ids = children.map((child) => child.id) + const usage = readUsageForSessions(db, ids) + const total = emptyUsage() + const currency = currencyFor(preferences, locale || preferences.language) + for (const row of usage) { + const cost = priceCall( + row.provider_id, + row.model_id, + { + input: Number(row.input_tokens) || 0, + cacheRead: Number(row.cache_read) || 0, + cacheWrite: Number(row.cache_write) || 0, + output: Number(row.output_tokens) || 0, + }, + { priceFile: preferences.priceFile, currency }, + ) + addUsage(total, { + input_tokens: row.input_tokens, + output_tokens: row.output_tokens, + cache_read_input_tokens: row.cache_read, + cache_creation_input_tokens: row.cache_write, + }, cost, row.calls) + } + subagentStats = { count: children.length, usage: total, currency } + } + } + const view = buildSessionView({ + session, + usageRows, + toolRows, + turnRows, + conversation, + rollout, + preferences, + providerWindows: windows, + fullRetention, + subagentStats, + }) + const entry = { revision, view, conversation, rollout, session, preferences, withSubagents } + cache.set(cacheKey, entry) + // One warm session per viewer is enough; keep the cache bounded. + if (cache.size > 8) { + const oldest = [...cache.entries()].sort((a, b) => (a[1].view.generatedAt ?? 0) - (b[1].view.generatedAt ?? 0))[0] + if (oldest && oldest[0] !== cacheKey) cache.delete(oldest[0]) + } + return entry + } + + async function snapshot(sessionId, { locale = 'en' } = {}) { + const entry = await ensureView(sessionId, { locale }) + return encodeSnapshot(entry.view) + } + + async function history(sessionId, { beforeStep = 0, limit = 160 } = {}) { + const entry = await ensureView(sessionId) + const total = entry.view.requests.length + const end = Math.max(0, Math.min(total, Number(beforeStep) || total)) + const start = Math.max(0, end - Math.max(1, Math.min(260, Number(limit) || 160))) + return { + wire: { parts: PART_ORDER, status: STATUS_CODES, header: HEADER_CODES }, + requests: entry.view.requests.slice(start, end).map(compactRequest), + requestsFrom: start + 1, + requestsTo: end, + requestsTotal: total, + hasEarlier: start > 0, + } + } + + async function step(sessionId, stepIndex, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + const detail = buildStepDetail(entry.view, stepIndex, { + baselineMode: options.baselineMode === 'off' ? 'off' : options.baselineMode === 'turn' ? 'turn' : 'step', + search: typeof options.search === 'string' ? options.search : '', + sort: ['size', 'order', 'name', 'calls'].includes(options.sort) ? options.sort : 'size', + }) + return fitStep(detail) + } + + async function group(sessionId, stepIndex, cat, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + return fitPagedItems(buildGroupDetail(entry.view, stepIndex, String(cat), { + offset: Number(options.offset) || 0, + limit: Math.min(60, Number(options.limit) || 40), + search: typeof options.search === 'string' ? options.search : '', + sort: ['size', 'order', 'name', 'calls'].includes(options.sort) ? options.sort : 'size', + }), 'items') + } + + async function dna(sessionId, stepIndex, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + return fitPagedItems(buildDnaDetail(entry.view, stepIndex, { + offset: Number(options.offset) || 0, + limit: Math.min(200, Number(options.limit) || 120), + }), 'items') + } + + async function dnaSeries(sessionId, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + let fromStep = Number(options.fromStep) || 1 + let toStep = Number(options.toStep) || 1_000_000 + let maxBands = Math.max(8, Math.min(80, Number(options.maxBands) || 36)) + let result = buildDnaSeries(entry.view, { fromStep, toStep, maxBands }) + // Keep the tool result under the host budget: drop the oldest bars first, then coarsen bands. + while (payloadBytes(result) > MAX_PAYLOAD_BYTES) { + if (result.steps.length > 40) { + fromStep = result.steps[Math.floor(result.steps.length * 0.25)]?.step ?? fromStep + result = buildDnaSeries(entry.view, { fromStep, toStep, maxBands }) + } else if (maxBands > 16) { + maxBands -= 8 + result = buildDnaSeries(entry.view, { fromStep, toStep, maxBands }) + } else { + break + } + } + return result + } + + async function element(sessionId, stepIndex, key, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + return readElementDetail({ + db, + view: entry.view, + stepIndex, + key, + format: options.format === 'raw' ? 'raw' : 'readable', + offset: Number(options.offset) || 0, + limit: Number(options.limit) || 12_000, + }) + } + + async function eventDetail(sessionId, eventId, options = {}) { + const entry = await ensureView(sessionId, { locale: options.locale }) + const event = entry.view.events.find((candidate) => candidate.id === eventId) + if (!event) throw new ContextError('event_missing', 'That event is no longer in this session.') + const detail = readEventDetail({ + db, + view: entry.view, + event, + offset: Number(options.offset) || 0, + limit: Math.min(20, Number(options.limit) || 12), + }) + if (detail?.messages) { + while (payloadBytes(detail) > MAX_PAYLOAD_BYTES && detail.messages.length > 4) { + const keep = Math.max(4, Math.floor(detail.messages.length * 0.75)) + detail.messages = detail.messages.slice(0, keep) + detail.nextOffset = (detail.offset ?? 0) + keep + detail.truncated = true + } + } + return detail + } + + async function fleet(sessionId, { locale = '' } = {}) { + const preferences = readPreferences(paths) + const currency = currencyFor(preferences, locale || preferences.language) + const family = readFleetSessions(db, sessionId) + const ids = family.sessions.map((session) => session.id) + const usage = readUsageForSessions(db, ids) + const latest = readLatestUsageForSessions(db, ids) + const latestBy = new Map(latest.map((row) => [row.session_id, row])) + const totals = new Map(ids.map((id) => [id, emptyUsage()])) + for (const row of usage) { + const total = totals.get(row.session_id) + if (!total) continue + const cost = priceCall( + row.provider_id, + row.model_id, + { + input: Number(row.input_tokens) || 0, + cacheRead: Number(row.cache_read) || 0, + cacheWrite: Number(row.cache_write) || 0, + output: Number(row.output_tokens) || 0, + }, + { priceFile: preferences.priceFile, currency }, + ) + addUsage(total, { + input_tokens: row.input_tokens, + output_tokens: row.output_tokens, + cache_read_input_tokens: row.cache_read, + cache_creation_input_tokens: row.cache_write, + }, cost, row.calls) + } + const byId = new Map(family.sessions.map((session) => [session.id, session])) + const depthOf = (session) => { + let depth = 0 + let cursor = session + const seen = new Set() + while (cursor.parent_id && byId.has(cursor.parent_id) && !seen.has(cursor.parent_id)) { + seen.add(cursor.parent_id) + cursor = byId.get(cursor.parent_id) + depth++ + } + return depth + } + const descendants = new Set() + const queue = [sessionId] + while (queue.length) { + const parent = queue.shift() + for (const session of family.sessions) { + if (session.parent_id === parent && !descendants.has(session.id)) { + descendants.add(session.id) + queue.push(session.id) + } + } + } + const ancestorIds = new Set() + let ancestorCursor = byId.get(sessionId) + while (ancestorCursor?.parent_id && byId.has(ancestorCursor.parent_id)) { + ancestorIds.add(ancestorCursor.parent_id) + ancestorCursor = byId.get(ancestorCursor.parent_id) + } + const nodes = family.sessions.map((session) => { + const total = totals.get(session.id) ?? emptyUsage() + const last = latestBy.get(session.id) ?? null + const info = last ? resolveModel(last.provider_id, last.model_id, { priceFile: preferences.priceFile, providerWindows, windowOverride: preferences.contextWindow }) : null + const window = info?.contextWindow ?? null + const prompt = Number(last?.input_tokens) || 0 + return { + id: session.id, + parentId: session.parent_id ?? null, + title: safeName(session.title, 300), + directory: session.directory, + taskType: session.task_type ?? null, + depth: depthOf(session), + role: session.id === sessionId ? 'self' : descendants.has(session.id) ? 'child' : ancestorIds.has(session.id) ? 'ancestor' : 'sibling', + createdAt: session.time_created, + updatedAt: session.time_updated, + model: last?.model_id ?? null, + provider: last?.provider_id ?? null, + status: last?.status ?? null, + running: last?.status === 'running', + usage: total, + latestPrompt: prompt, + latestAt: last?.started_at ?? null, + contextWindow: window, + contextPct: window ? (prompt / window) * 100 : null, + cacheHitRate: total.input > 0 ? (total.cacheRead / total.input) * 100 : null, + currency, + calls: usage.filter((row) => row.session_id === session.id).reduce((sum, row) => sum + Number(row.calls ?? 0), 0), + } + }) + nodes.sort((a, b) => a.depth - b.depth || a.createdAt - b.createdAt) + const edges = nodes + .filter((node) => node.parentId && byId.has(node.parentId)) + .map((node) => ({ from: node.parentId, to: node.id })) + return { + nodes, + edges, + currentId: sessionId, + truncated: family.truncated, + currency, + } + } + + async function fleetMember(sessionId, targetId, { locale = '' } = {}) { + if (!targetId) throw new ContextError('member_missing', 'No fleet member was selected.') + const family = readFleetSessions(db, sessionId) + const target = family.sessions.find((session) => session.id === targetId) + if (!target) throw new ContextError('member_missing', 'That agent is not part of this family.') + const preferences = readPreferences(paths) + const currency = currencyFor(preferences, locale || preferences.language) + const usage = readUsageForSessions(db, [targetId]) + const latest = readLatestUsageForSessions(db, [targetId])[0] ?? null + const total = emptyUsage() + for (const row of usage) { + const cost = priceCall( + row.provider_id, + row.model_id, + { + input: Number(row.input_tokens) || 0, + cacheRead: Number(row.cache_read) || 0, + cacheWrite: Number(row.cache_write) || 0, + output: Number(row.output_tokens) || 0, + }, + { priceFile: preferences.priceFile, currency }, + ) + addUsage(total, { + input_tokens: row.input_tokens, + output_tokens: row.output_tokens, + cache_read_input_tokens: row.cache_read, + cache_creation_input_tokens: row.cache_write, + }, cost, row.calls) + } + const info = latest ? resolveModel(latest.provider_id, latest.model_id, { priceFile: preferences.priceFile, providerWindows, windowOverride: preferences.contextWindow }) : null + const children = db + .prepare('SELECT id, title, task_type FROM session WHERE parent_id = ? ORDER BY time_created') + .all(targetId) + const preview = readSessionPreview(db, targetId) + return { + session: { + id: target.id, + parentId: target.parent_id ?? null, + title: safeName(target.title, 300), + directory: target.directory, + taskType: target.task_type ?? null, + createdAt: target.time_created, + updatedAt: target.time_updated, + }, + preview, + usage: total, + latest: latest + ? { + model: latest.model_id, + provider: latest.provider_id, + status: latest.status, + prompt: latest.input_tokens, + output: latest.output_tokens, + startedAt: latest.started_at, + durationMs: latest.duration_ms, + contextWindow: info?.contextWindow ?? null, + contextPct: info?.contextWindow ? (latest.input_tokens / info.contextWindow) * 100 : null, + } + : null, + children, + currency, + } + } + + async function insights({ range = '30d', includeComposition = false, locale = '' } = {}) { + const preferences = readPreferences(paths) + const currency = currencyFor(preferences, locale || preferences.language) + const now = Date.now() + const days = range === '7d' ? 7 : range === 'all' ? 3650 : 30 + const since = range === 'all' ? 0 : now - days * 86_400_000 + const data = readInsights(db, { since, limit: 500 }) + const dailyModel = readInsightsDailyModel(db, since) + const sessions = new Map(data.sessions.map((session) => [session.id, session])) + const totals = new Map() + for (const row of data.perModel) { + const total = totals.get(row.session_id) ?? emptyUsage() + const cost = priceCall( + row.provider_id, + row.model_id, + { + input: Number(row.input_tokens) || 0, + cacheRead: Number(row.cache_read) || 0, + cacheWrite: Number(row.cache_write) || 0, + output: Number(row.output_tokens) || 0, + }, + { priceFile: preferences.priceFile, currency }, + ) + addUsage(total, { + input_tokens: row.input_tokens, + output_tokens: row.output_tokens, + cache_read_input_tokens: row.cache_read, + cache_creation_input_tokens: row.cache_write, + }, cost, row.calls) + total.firstAt = total.firstAt ? Math.min(total.firstAt, row.first_at) : row.first_at + total.lastAt = total.lastAt ? Math.max(total.lastAt, row.last_at) : row.last_at + totals.set(row.session_id, total) + } + const latestBy = new Map(data.latest.map((row) => [row.session_id, row])) + const daily = new Map() + for (const row of dailyModel) { + const bucket = daily.get(row.day) ?? { day: row.day, input: 0, output: 0, cacheRead: 0, cacheWrite: 0, calls: 0, cost: null, unpriced: 0 } + const cost = priceCall( + row.provider_id, + row.model_id, + { + input: Number(row.input_tokens) || 0, + cacheRead: Number(row.cache_read) || 0, + cacheWrite: Number(row.cache_write) || 0, + output: Number(row.output_tokens) || 0, + }, + { priceFile: preferences.priceFile, currency }, + ) + bucket.input += Number(row.input_tokens) || 0 + bucket.output += Number(row.output_tokens) || 0 + bucket.cacheRead += Number(row.cache_read) || 0 + bucket.cacheWrite += Number(row.cache_write) || 0 + bucket.calls += Number(row.calls) || 0 + if (cost != null) bucket.cost = (bucket.cost ?? 0) + cost + else if ((Number(row.input_tokens) || 0) + (Number(row.output_tokens) || 0) > 0) bucket.unpriced++ + daily.set(row.day, bucket) + } + const cards = data.sessions.map((session) => { + const total = totals.get(session.id) ?? emptyUsage() + const last = latestBy.get(session.id) ?? null + const info = last ? resolveModel(last.provider_id, last.model_id, { priceFile: preferences.priceFile, providerWindows, windowOverride: preferences.contextWindow }) : null + const window = info?.contextWindow ?? null + const prompt = Number(last?.input_tokens) || 0 + return { + id: session.id, + parentId: session.parent_id ?? null, + title: safeName(session.title, 300), + directory: session.directory, + projectId: session.project_id, + taskType: session.task_type ?? null, + createdAt: session.time_created, + updatedAt: session.time_updated, + usage: total, + latestPrompt: prompt, + latestAt: last?.started_at ?? null, + model: last?.model_id ?? null, + provider: last?.provider_id ?? null, + status: last?.status ?? null, + contextWindow: window, + contextPct: window ? (prompt / window) * 100 : null, + cacheHitRate: total.input > 0 ? (total.cacheRead / total.input) * 100 : null, + calls: total.calls ?? 0, + currency, + } + }) + cards.sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0)) + const kpi = { + sessions: cards.length, + billed: cards.reduce((sum, card) => sum + card.usage.billed, 0), + input: cards.reduce((sum, card) => sum + card.usage.input, 0), + output: cards.reduce((sum, card) => sum + card.usage.output, 0), + cacheRead: cards.reduce((sum, card) => sum + card.usage.cacheRead, 0), + cost: cards.some((card) => card.usage.cost != null) ? cards.reduce((sum, card) => sum + (card.usage.cost ?? 0), 0) : null, + unpriced: cards.reduce((sum, card) => sum + card.usage.unpriced, 0), + currency, + } + kpi.cacheHitRate = kpi.input > 0 ? (kpi.cacheRead / kpi.input) * 100 : null + kpi.calls = cards.reduce((sum, card) => sum + (card.calls ?? 0), 0) + const weighted = cards.filter((card) => card.contextPct != null) + const weight = weighted.reduce((sum, card) => sum + Math.max(1, card.usage?.billed ?? 0), 0) + kpi.avgContextPct = weight > 0 ? weighted.reduce((sum, card) => sum + card.contextPct * Math.max(1, card.usage?.billed ?? 0), 0) / weight : null + let composition = null + let compositionSessions = 0 + if (includeComposition) { + const candidates = [...cards].sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0)).slice(0, 12) + const sum = Object.fromEntries(PART_ORDER.map((cat) => [cat, 0])) + for (const card of candidates) { + try { + const entry = await ensureView(card.id, { withSubagents: false }) + if (!entry.view.current) continue + compositionSessions++ + for (const cat of PART_ORDER) sum[cat] += entry.view.current.parts?.[cat] ?? 0 + } catch {} + } + if (compositionSessions > 0) composition = sum + } + return fitInsights({ + range, + days, + since, + kpi, + daily: [...daily.values()].sort((a, b) => a.day.localeCompare(b.day)), + sessionCards: cards.slice(0, 500), + composition, + compositionSessions, + compositionPartial: composition != null && compositionSessions < cards.length, + coverageNote: + 'Daily and heatmap figures only cover sessions whose usage rows are still retained locally; context composition is computed for the 12 most recent sessions, so older headers may be missing.', + currency, + generatedAt: now, + }) + } + + async function preferencesGet() { + return readPreferences(paths) + } + + async function preferencesSet(patch) { + return writePreferences(paths, patch) + } + + async function report(sessionId) { + const entry = await ensureView(sessionId) + return { text: buildReport(entry.view), sessionId, step: entry.view.current?.step ?? null } + } + + function close() { + try { + db.close() + } catch {} + } + + return { + snapshot, + history, + step, + group, + dna, + dnaSeries, + element, + eventDetail, + fleet, + fleetMember, + insights, + preferencesGet, + preferencesSet, + report, + close, + } +} diff --git a/ui-plugins/zcode-context-insight/src/shared/estimate.mjs b/ui-plugins/zcode-context-insight/src/shared/estimate.mjs new file mode 100644 index 0000000..717451a --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/shared/estimate.mjs @@ -0,0 +1,369 @@ +/** + * Shared token accounting and formatting. + * + * The estimator is deliberately tokenizer-free: it mirrors the fixed-density accounting used by + * DeepSeek Harness / ZCode's context meter, with a script-weighted correction so CJK text is not + * under-counted. Figures are labelled as estimates in the UI; provider-reported prompt/output + * totals remain the authority and are used to anchor each request's composition. + */ + +const BLOCK_OVERHEAD = 4 +const ROLE_OVERHEAD = 4 + +const isWide = (code) => + (code >= 0x2e80 && code <= 0x9fff) || + (code >= 0xac00 && code <= 0xd7af) || + (code >= 0xf900 && code <= 0xfaff) || + (code >= 0xff00 && code <= 0xffef) + +/** Script-weighted token estimate (~4 ASCII chars, ~1.5 CJK chars, ~2 other chars per token). */ +export function estimateTokens(text) { + const value = typeof text === 'string' ? text : text == null ? '' : String(text) + let narrow = 0 + let wide = 0 + let other = 0 + for (let i = 0; i < value.length; i++) { + const code = value.charCodeAt(i) + if (code < 0x80) narrow++ + else if (isWide(code)) wide++ + else { + other++ + if (code >= 0xd800 && code <= 0xdbff) i++ + } + } + return Math.ceil(narrow / 4 + wide / 1.5 + other / 2) +} + +/** Stable JSON used for content identity and size accounting. */ +export function canonical(value) { + if (value === undefined) return 'null' + if (Array.isArray(value)) return '[' + value.map(canonical).join(',') + ']' + if (value !== null && typeof value === 'object') { + return ( + '{' + + Object.keys(value) + .sort() + .map((key) => JSON.stringify(key) + ':' + canonical(value[key])) + .join(',') + + '}' + ) + } + const json = JSON.stringify(value) + return json === undefined ? 'null' : json +} + +const CACHE_KEYS = new Set(['cacheControl', 'cache_control']) +function withoutCache(value) { + if (Array.isArray(value)) return value.map(withoutCache) + if (value !== null && typeof value === 'object') { + const out = {} + for (const [key, item] of Object.entries(value)) if (!CACHE_KEYS.has(key)) out[key] = withoutCache(item) + return out + } + return value +} + +/** Content identity for diffing: cache breakpoints move every request and are not content. */ +export function contentKey(value) { + return canonical(withoutCache(value)) +} + +export function estimateJson(value) { + return estimateTokens(canonical(value)) +} + +export function estimateTextBlock(text) { + return typeof text === 'string' && text.length > 0 ? estimateTokens(text) + BLOCK_OVERHEAD : 0 +} + +export function estimateToolCall(name, input) { + if (!name && input == null) return 0 + return estimateTokens(String(name ?? '')) + estimateJson(input ?? {}) + BLOCK_OVERHEAD +} + +export function estimateToolResult(output) { + if (output == null) return 0 + const text = typeof output === 'string' ? output : canonical(output) + return text.length > 0 ? estimateTokens(text) + BLOCK_OVERHEAD : 0 +} + +export function estimateSystemContent(system) { + if (system == null) return 0 + if (typeof system === 'string') return estimateTokens(system) + ROLE_OVERHEAD + if (Array.isArray(system)) { + if (system.length === 0) return 0 + const text = system + .map((block) => + block && typeof block === 'object' && block.type === 'text' && typeof block.text === 'string' + ? block.text + : canonical(block), + ) + .join('\n') + return estimateTokens(text) + ROLE_OVERHEAD + } + return estimateJson(system) + ROLE_OVERHEAD +} + +export function estimateToolsTotal(tools) { + if (!Array.isArray(tools) || tools.length === 0) return 0 + return estimateJson(tools) + BLOCK_OVERHEAD +} + +export function estimateToolSchema(tool) { + return estimateJson(tool) + BLOCK_OVERHEAD +} + +export function estimateBlocks(blocks) { + if (!Array.isArray(blocks)) return 0 + let tokens = 0 + for (const block of blocks) { + if (block === null || typeof block !== 'object') { + tokens += BLOCK_OVERHEAD + continue + } + switch (block.type) { + case 'text': + case 'reasoning': + tokens += estimateTextBlock(block.text || '') + break + case 'tool-call': + case 'tool_use': + tokens += estimateToolCall(block.name || block.toolName, block.input ?? block.args ?? block.arguments) + break + case 'tool-result': + case 'tool_result': + tokens += estimateToolResult(block.output ?? block.result ?? block.content) + break + case 'image': + case 'file': { + const image = block.metadata?.image ?? block.image ?? block + const width = Number(image?.width ?? image?.originalWidth) + const height = Number(image?.height ?? image?.originalHeight) + const priced = estimateImageTokens(width, height) + tokens += (priced ?? Math.ceil(canonical(block).length / 4)) + BLOCK_OVERHEAD + break + } + default: + tokens += BLOCK_OVERHEAD + estimateJson(block) + } + } + return tokens +} + +export function estimateMessage(message, emptyIsZero = false) { + if (emptyIsZero && (!message || !Array.isArray(message.content) || message.content.length === 0)) return 0 + return estimateBlocks(message?.content) + ROLE_OVERHEAD +} + +export function lineCountOf(text) { + if (typeof text !== 'string' || text.length === 0) return 0 + let lines = 0 + for (let i = 0; i < text.length; i++) if (text[i] === '\n') lines++ + return text.endsWith('\n') ? lines : lines + 1 +} + +export function firstLineOf(text, max = 160) { + for (const line of String(text ?? '').split('\n')) { + const value = line.trim() + if (value && !/^<\/?[a-z][\w-]*>$/i.test(value)) return value.slice(0, max) + } + return '' +} + +export function oneLineOf(text, max = 160) { + return String(text ?? '').replace(/\s+/g, ' ').trim().slice(0, max) +} + +export function truncate(text, max) { + const value = String(text ?? '') + return value.length <= max ? value : value.slice(0, max) +} + +export function formatTokens(value) { + const n = Number(value) + if (!Number.isFinite(n) || n === 0) return '0' + const abs = Math.abs(n) + if (abs >= 1e9) return (n / 1e9).toFixed(1).replace(/\.0$/, '') + 'B' + if (abs >= 1e6) return (n / 1e6).toFixed(1).replace(/\.0$/, '') + 'M' + if (abs >= 1e3) return (n / 1e3).toFixed(1).replace(/\.0$/, '') + 'k' + return String(Math.round(n)) +} + +export function formatCount(value) { + const n = Number(value) + if (!Number.isFinite(n)) return '0' + return Math.round(n).toLocaleString('en-US') +} + +export function formatDuration(ms) { + const n = Number(ms) + if (!Number.isFinite(n) || n <= 0) return '—' + if (n < 1000) return Math.round(n) + 'ms' + if (n < 60_000) return (n / 1000).toFixed(n < 10_000 ? 1 : 0).replace(/\.0$/, '') + 's' + if (n < 3_600_000) { + const minutes = Math.floor(n / 60_000) + const seconds = Math.round((n % 60_000) / 1000) + return seconds > 0 ? minutes + 'm' + seconds + 's' : minutes + 'm' + } + const hours = Math.floor(n / 3_600_000) + const minutes = Math.round((n % 3_600_000) / 60_000) + return minutes > 0 ? hours + 'h' + minutes + 'm' : hours + 'h' +} + +export function formatShare(value, total) { + if (!Number.isFinite(value) || !Number.isFinite(total) || total <= 0) return '0.0' + return ((value / total) * 100).toFixed(1) +} + +export function formatBytes(bytes) { + const n = Number(bytes) + if (!Number.isFinite(n) || n <= 0) return '0 B' + if (n < 1024) return Math.round(n) + ' B' + if (n < 1024 * 1024) return (n / 1024).toFixed(1) + ' KiB' + if (n < 1024 * 1024 * 1024) return (n / 1024 / 1024).toFixed(1) + ' MiB' + return (n / 1024 / 1024 / 1024).toFixed(2) + ' GiB' +} + +const USD_PER_CNY = 0.15 + +/** USD list-price total for one model's billed buckets (rates are USD per 1M tokens). */ +export function costOfBuckets(rate, buckets, currency = 'usd') { + if (!rate || !buckets) return null + const uncached = Math.max(0, Number(buckets.uncached) || 0) + const cacheRead = Math.max(0, Number(buckets.cacheRead) || 0) + const cacheWrite = Math.max(0, Number(buckets.cacheWrite) || 0) + const output = Math.max(0, Number(buckets.output) || 0) + const usd = + (uncached * Number(rate.miss ?? 0) + + cacheRead * Number(rate.hit ?? 0) + + cacheWrite * Number(rate.write ?? 0) + + output * Number(rate.out ?? 0)) / + 1e6 + return currency === 'cny' ? usd / USD_PER_CNY : usd +} + +export function formatCost(value, currency = 'usd') { + const n = Number(value) + if (!Number.isFinite(n)) return '—' + const symbol = currency === 'cny' ? '¥' : '$' + const abs = Math.abs(n) + if (abs === 0) return symbol + '0' + if (abs < 0.001) return symbol + n.toFixed(5) + if (abs < 0.01) return symbol + n.toFixed(4) + if (abs < 1) return symbol + n.toFixed(3) + return symbol + n.toFixed(2) +} + +/* ------------------------------------------------------------------------------------------------ + * DeepSeek vision token estimate — a port of the official image-token calculator (aspect-preserving + * rescale, 14px patches with 3:1 downsampling, 384-token cap). Used only for attachment cards. + * ---------------------------------------------------------------------------------------------- */ + +const PATCH_SIZE = 14 +const DOWNSAMPLE_RATIO = 3 +const MAX_TOKENS = 384 +const COMPRESS_PAD_TO = 4 +const MAX_WH_RATIO = 8 +const MIN_PIXELS = 147456 + +const floorDiv = (a, b) => Math.floor(a / b) +const ceilDiv = (a, b) => Math.floor((a + b - 1) / b) + +function gridTokens(rows, cols) { + let n = rows * (cols + 1) + 2 + if (rows % 2 === 1) n += cols + 1 + n += ((ceilDiv(rows, 2) * (cols + 1)) % 2) * 2 + return n +} + +function solveResizeRatio(height, width, budget) { + const ratio = height / width + const gridW = Math.sqrt((budget - 2) / ratio + 0.25) - 0.5 + const gridH = gridW * ratio + const unit = PATCH_SIZE * DOWNSAMPLE_RATIO + let bestHeight + let bestWidth + if (gridW < 1) { + let rows = floorDiv(budget - 2, 2) + if (rows % 2 === 1) rows -= 1 + bestWidth = unit + bestHeight = rows * unit + } else if (gridH < 2) { + const cols = floorDiv(budget - 2, 2) - 1 + if (cols <= 1) throw new Error('image tokens: budget too small') + bestHeight = 2 * unit + bestWidth = cols * unit + } else { + const cols = Math.trunc(gridW) + let rows = Math.trunc(gridH) + if (rows % 2 === 1) rows -= 1 + const scale = Math.min((cols * unit) / width, (rows * unit) / height) + bestWidth = Math.trunc((width * scale) / PATCH_SIZE) * PATCH_SIZE + bestHeight = Math.trunc((height * scale) / PATCH_SIZE) * PATCH_SIZE + } + const nLlmH = ceilDiv(floorDiv(bestHeight, PATCH_SIZE), DOWNSAMPLE_RATIO) + const nLlmW = ceilDiv(floorDiv(bestWidth, PATCH_SIZE), DOWNSAMPLE_RATIO) + return { nLlmH, nLlmW, bestHeight, bestWidth, numTokens: gridTokens(nLlmH, nLlmW) } +} + +function safeResize(height, width, paddedHeight, paddedWidth) { + const nLlmH = ceilDiv(floorDiv(paddedHeight, PATCH_SIZE), DOWNSAMPLE_RATIO) + const nLlmW = ceilDiv(floorDiv(paddedWidth, PATCH_SIZE), DOWNSAMPLE_RATIO) + const pad = COMPRESS_PAD_TO - 1 + const budget = MAX_TOKENS - pad + let result = { + nLlmH, + nLlmW, + bestHeight: paddedHeight, + bestWidth: paddedWidth, + numTokens: gridTokens(nLlmH, nLlmW), + } + if (result.numTokens > budget) { + result = solveResizeRatio(height, width, budget) + let nextBudget = budget + while (result.numTokens > budget) { + nextBudget -= 1 + result = solveResizeRatio(height, width, nextBudget) + } + } + result.numTokens += pad + return result +} + +function calcResizeInner(width, height) { + let w = width + let h = height + if (w > h * MAX_WH_RATIO) w = h * MAX_WH_RATIO + const pixels = w * h + if (pixels < MIN_PIXELS && pixels > 0) { + const scale = Math.sqrt(MIN_PIXELS / pixels) + w = Math.trunc(w * scale) + h = Math.trunc(h * scale) + } + const paddedWidth = ceilDiv(w, PATCH_SIZE) * PATCH_SIZE + const paddedHeight = ceilDiv(h, PATCH_SIZE) * PATCH_SIZE + return safeResize(h, w, paddedHeight, paddedWidth) +} + +export function estimateImageTokens(width, height) { + if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) return null + try { + let result = calcResizeInner(width, height) + for (let i = 1; i < 10; i++) { + const next = calcResizeInner(result.bestWidth, result.bestHeight) + if ( + next.nLlmH === result.nLlmH && + next.nLlmW === result.nLlmW && + next.bestHeight === result.bestHeight && + next.bestWidth === result.bestWidth && + next.numTokens === result.numTokens + ) { + return result.numTokens + } + result = next + } + return null + } catch { + return null + } +} diff --git a/ui-plugins/zcode-context-insight/src/shared/models.json b/ui-plugins/zcode-context-insight/src/shared/models.json new file mode 100644 index 0000000..e77894a --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/shared/models.json @@ -0,0 +1 @@ +{"generatedAt":"2026-10-19T15:06:19.356Z","source":"https://models.dev/api.json","providers":{"hetzner":{"name":"Hetzner","npm":"@ai-sdk/openai-compatible","models":{"Qwen3.8-27B":{"name":"Qwen3.8-27B","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-14"},"Qwen/Qwen3.6-35B-A3B-FP8":{"name":"Qwen3.6 35B A3B FP8","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-17"}}},"wallaby":{"name":"Wallaby","npm":"@ai-sdk/openai-compatible","models":{"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":2.7,"output":13.5,"cache_read":0.27},"updated":"2026-07-16"}}},"io-net":{"name":"IO.NET","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"name":"Llama 4 Maverick 17B 128E Instruct","limit":{"context":430000,"output":4096},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.3},"updated":"2025-01-15"},"meta-llama/Llama-3.2-90B-Vision-Instruct":{"name":"Llama 3.2 90B Vision Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.35,"output":0.4,"cache_read":0.175,"cache_write":0.7},"updated":"2024-09-25"},"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.13,"output":0.38,"cache_read":0.065,"cache_write":0.26},"updated":"2024-12-06"},"zai-org/GLM-4.6":{"name":"GLM 4.6","limit":{"context":200000,"output":4096},"cost":{"input":0.4,"output":1.75,"cache_read":0.2,"cache_write":0.8},"updated":"2024-11-15"},"openai/gpt-oss-20b":{"name":"GPT-OSS 20B","limit":{"context":64000,"output":4096},"cost":{"input":0.03,"output":0.14,"cache_read":0.015,"cache_write":0.06},"updated":"2024-12-01"},"openai/gpt-oss-120b":{"name":"GPT-OSS 120B","limit":{"context":131072,"output":4096},"cost":{"input":0.04,"output":0.4,"cache_read":0.02,"cache_write":0.08},"updated":"2024-12-01"},"Qwen/Qwen2.5-VL-32B-Instruct":{"name":"Qwen 2.5 VL 32B Instruct","limit":{"context":32000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1},"updated":"2024-11-01"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"name":"Qwen 3 Next 80B Instruct","limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.8,"cache_read":0.05,"cache_write":0.2},"updated":"2025-01-10"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"name":"Qwen 3 235B Thinking","limit":{"context":262144,"output":4096},"cost":{"input":0.11,"output":0.6,"cache_read":0.055,"cache_write":0.22},"updated":"2025-07-01"},"moonshotai/Kimi-K2-Thinking":{"name":"Kimi K2 Thinking","limit":{"context":32768,"output":4096},"cost":{"input":0.55,"output":2.25,"cache_read":0.275,"cache_write":1.1},"updated":"2024-11-01"},"moonshotai/Kimi-K2-Instruct-0905":{"name":"Kimi K2 Instruct","limit":{"context":32768,"output":4096},"cost":{"input":0.39,"output":1.9,"cache_read":0.195,"cache_write":0.78},"updated":"2024-09-05"},"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{"name":"Qwen 3 Coder 480B","limit":{"context":106000,"output":4096},"cost":{"input":0.22,"output":0.95,"cache_read":0.11,"cache_write":0.44},"updated":"2025-01-15"},"mistralai/Magistral-Small-2506":{"name":"Magistral Small 2506","limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0.25,"cache_write":1},"updated":"2025-06-01"},"mistralai/Mistral-Large-Instruct-2411":{"name":"Mistral Large Instruct 2411","limit":{"context":128000,"output":4096},"cost":{"input":2,"output":6,"cache_read":1,"cache_write":4},"updated":"2024-11-01"},"mistralai/Devstral-Small-2505":{"name":"Devstral Small 2505","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1},"updated":"2025-05-01"},"mistralai/Mistral-Nemo-Instruct-2407":{"name":"Mistral Nemo Instruct 2407","limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.04,"cache_read":0.01,"cache_write":0.04},"updated":"2024-07-01"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek R1","limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8.75,"cache_read":1,"cache_write":4},"updated":"2025-05-28"}}},"prime":{"name":"Prime Inference","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/llama-3.3-70b-instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":1.04,"output":2.253},"updated":"2024-12-06"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10},"updated":"2026-09-29"},"openai/gpt-5.6-terra-pro":{"name":"GPT-5.6 Terra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15},"updated":"2026-07-09"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-08-07"},"openai/gpt-5.6-sol-pro":{"name":"GPT-5.6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2},"updated":"2026-07-09"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 Mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-07-09"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 Nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4},"updated":"2025-08-07"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15},"updated":"2026-03-05"},"openai/gpt-oss-20b":{"name":"gpt-oss-20b","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3},"updated":"2025-08-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o-mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2024-07-18"},"openai/gpt-5.6-luna-pro":{"name":"GPT-5.6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6},"updated":"2026-07-09"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-02-05"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5},"updated":"2026-09-22"},"openai/gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":65536},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-05"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25},"updated":"2026-10-15"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6},"updated":"2026-08-12"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":450000},"cost":{"input":1.6,"output":4.8},"updated":"2026-09-21"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":943718},"cost":{"input":0.44,"output":1.32},"updated":"2026-07-31"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro 0423","limit":{"context":1048576,"output":384000},"cost":{"input":1.91,"output":3.83},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.3},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash 0423","limit":{"context":1048576,"output":943717},"cost":{"input":0.44,"output":1.32},"updated":"2026-04-24"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 0905","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"updated":"2025-09-05"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":943718},"cost":{"input":3.45,"output":17.25},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-06-09"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-07-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B","limit":{"context":131072,"output":117964},"cost":{"input":0.119,"output":0.3},"updated":"2025-03-12"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2025-12-17"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-02-19"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.35,"output":6.75},"updated":"2026-08-13"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75},"updated":"2026-09-02"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"updated":"2026-05-19"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":943718},"cost":{"input":2,"output":10},"updated":"2026-10-13"},"z-ai/glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0.15},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":1.4},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM 5.2","limit":{"context":1048576,"output":943718},"cost":{"input":1.54,"output":4.84},"updated":"2026-06-13"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":235929},"cost":{"input":0.3,"output":1.5},"updated":"2026-02-03"},"qwen/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.2,"output":0.7},"updated":"2025-10-04"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":1.5},"updated":"2025-09-23"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":235929},"cost":{"input":0.99,"output":3.2},"updated":"2026-08-14"},"mistralai/mixtral-8x22b-instruct":{"name":"Mixtral 8x22B Instruct","limit":{"context":65536,"output":52428},"cost":{"input":2.2,"output":6.6},"updated":"2024-04-17"},"mistralai/mistral-nemo":{"name":"Mistral Nemo","limit":{"context":131072,"output":16384},"cost":{"input":0.165,"output":0.17},"updated":"2024-07-01"},"mistralai/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":209715},"cost":{"input":0.165,"output":0.66},"updated":"2026-03-16"},"mistralai/mistral-large-2512":{"name":"Mistral Large 3 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"}}},"openreason":{"name":"OpenReason","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.1055,"output":0.422},"updated":"2025-08-05"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":1.0022,"output":4.22},"updated":"2026-06-12"},"deepseek-ai/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.1371,"output":0.2743},"updated":"2026-07-31"}}},"moark":{"name":"Moark","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.3},"updated":"2026-07-31"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.2},"updated":"2025-12-23"},"Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.98,"output":4},"updated":"2026-04-21"},"Qwen3.6-Flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.18,"output":1.03},"updated":"2026-04-27"},"GLM-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.42,"output":2.2},"updated":"2025-12-22"},"DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.8,"output":3.6},"updated":"2026-04-24"},"DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.5,"output":0.5},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.2},"updated":"2026-03-18"},"GLM-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4.18},"updated":"2026-08-14"}}},"azure-cognitive-services":{"name":"Azure Cognitive Services","npm":"@ai-sdk/azure","models":{"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-11-18"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-04-21"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-17"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-11-18"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"gpt-chat-latest":{"name":"GPT Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-28"},"claude-opus-4-1":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-11-18"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"claude-mythos-5":{"name":"Claude Mythos 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-08-01"},"gpt-3.5-turbo-instruct":{"name":"GPT-3.5 Turbo Instruct","limit":{"context":4096,"output":4096},"cost":{"input":1.5,"output":2},"updated":"2023-09-21"},"gpt-image-2.5-sunburst":{"name":"GPT Image 2.5 Sunburst","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"gpt-3.5-turbo-1106":{"name":"GPT-3.5 Turbo 1106","limit":{"context":16384,"output":4096},"cost":{"input":1,"output":2},"updated":"2023-11-06"},"phi-4-reasoning-plus":{"name":"Phi-4-reasoning-plus","limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"phi-4-mini-reasoning":{"name":"Phi-4-mini-reasoning","limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3},"updated":"2024-12-11"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-01-14"},"phi-4-mini":{"name":"Phi-4-mini","limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3},"updated":"2024-12-11"},"llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama 4 Maverick 17B 128E Instruct FP8","limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1},"updated":"2025-04-05"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-14"},"codestral-2501":{"name":"Codestral 25.01","limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9},"updated":"2025-01-01"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-14"},"gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-14"},"cohere-embed-v3-english":{"name":"Embed v3 English","limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0},"updated":"2023-11-07"},"codex-mini":{"name":"Codex Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.5,"output":6,"cache_read":0.375},"updated":"2025-05-16"},"o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"gpt-image-1.5":{"name":"GPT-Image-1.5","limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"updated":"2025-11-25"},"gpt-4-turbo-vision":{"name":"GPT-4 Turbo Vision","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"mistral-medium-2505":{"name":"Mistral Medium 3","limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2},"updated":"2025-05-07"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"cohere-command-a":{"name":"Command A","limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-24"},"gpt-image-2.5-flare":{"name":"GPT Image 2.5 Flare","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"phi-4-reasoning":{"name":"Phi-4-reasoning","limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-08-07"},"gpt-image-2":{"name":"GPT-Image-2","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-04-21"},"text-embedding-ada-002":{"name":"text-embedding-ada-002","limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0},"updated":"2022-12-15"},"cohere-embed-v3-multilingual":{"name":"Embed v3 Multilingual","limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0},"updated":"2023-11-07"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.125},"updated":"2025-12-11"},"deepseek-v3.2-speciale":{"name":"DeepSeek-V3.2-Speciale","limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68},"updated":"2025-12-01"},"deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":163840,"output":163840},"cost":{"input":1.35,"output":5.4},"updated":"2025-01-20"},"deepseek-v3.2":{"name":"DeepSeek-V3.2","limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68},"updated":"2025-12-01"},"gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":128000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01},"updated":"2025-08-07"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71},"updated":"2024-12-06"},"model-router":{"name":"Model Router","limit":{"context":200000,"output":16384},"cost":{"input":0.14,"output":0},"updated":"2025-11-18"},"llama-4-scout-17b-16e-instruct":{"name":"Llama 4 Scout 17B 16E Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78},"updated":"2025-04-05"},"gpt-3.5-turbo-0125":{"name":"GPT-3.5 Turbo 0125","limit":{"context":16384,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2024-01-25"},"text-embedding-3-small":{"name":"text-embedding-3-small","limit":{"context":8192,"output":1536},"cost":{"input":0.02,"output":0},"updated":"2024-01-25"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-09-15"},"text-embedding-3-large":{"name":"text-embedding-3-large","limit":{"context":8192,"output":3072},"cost":{"input":0.13,"output":0},"updated":"2024-01-25"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-24"},"phi-4-multimodal":{"name":"Phi-4-multimodal","limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32},"updated":"2024-12-11"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"mistral-small-2503":{"name":"Mistral Small 3.1","limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3},"updated":"2025-03-01"},"cohere-embed-v-4-0":{"name":"Embed v4","limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0},"updated":"2025-04-15"},"gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-08-07"},"phi-4":{"name":"Phi-4","limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"ministral-3b":{"name":"Ministral 3B","limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04},"updated":"2024-10-22"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"gpt-image-1":{"name":"GPT-Image-1","limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"updated":"2025-04-24"}}},"friendli":{"name":"Friendli","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-02-12"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"deepseek-ai/DeepSeek-V3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":1.5,"cache_read":0.25},"updated":"2025-12-01"}}},"abliteration-ai":{"name":"abliteration.ai","npm":"@ai-sdk/openai-compatible","models":{"abliterated-model-large-v2":{"name":"Abliterated Model Large V2","limit":{"context":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5},"updated":"2026-08-31"},"abliterated-model-large":{"name":"Abliterated Model Large","limit":{"context":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5},"updated":"2026-07-28"},"abliterated-model":{"name":"Abliterated Model","limit":{"context":150000,"output":8192},"cost":{"input":3,"output":3,"cache_read":0.3},"updated":"2026-07-28"}}},"cloudflare-ai-gateway":{"name":"Cloudflare AI Gateway","npm":"ai-gateway-provider","models":{"fireworks/ember-1":{"name":"Ember-1","limit":{"context":1040000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-22"},"xai/grok-4.20-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":5,"cache_read":0.625},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":128000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":128000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":128000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":128000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":128000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":128000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.16},"updated":"2026-08-05"},"meta/muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.16},"updated":"2026-09-02"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1040000,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.16},"updated":"2026-07-09"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":131072,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"updated":"2026-04-24"},"unbiased/pareto":{"name":"Pareto","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"updated":"2026-09-17"},"alibaba/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"alibaba/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064},"updated":"2026-06-02"},"alibaba/qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6},"updated":"2025-09-23"},"alibaba/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-03"},"alibaba/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"updated":"2026-05-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"reflection-ai/beam-1.0-501b-a23b":{"name":"Beam 1.0 501B A23B","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-16"}}},"oci":{"name":"OCI Generative AI","npm":"@ai-sdk/openai-compatible","models":{"meta.llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":512000,"output":16384},"cost":{"input":0.72,"output":0.72},"updated":"2025-04-05"},"xai.grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"openai.gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3},"updated":"2025-08-05"},"xai.grok-4.20-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"meta.llama-4-scout-17b-16e-instruct":{"name":"Llama 4 Scout 17B Instruct","limit":{"context":192000,"output":16384},"cost":{"input":0.72,"output":0.72},"updated":"2025-04-05"},"openai.gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"meta.llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"updated":"2024-12-06"},"xai.grok-4.20-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai.grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"}}},"vultr":{"name":"Vultr","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.35},"updated":"2026-08-26"},"laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1048576,"output":32768},"cost":{"input":0.09,"output":0.18},"updated":"2026-07-21"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.1,"output":0.25},"updated":"2026-07-31"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":0.75,"output":3},"updated":"2026-08-14"},"glm-5.x-menthol":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":0.4,"output":1.75},"updated":"2026-02-12"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":0.75,"output":3},"updated":"2026-06-13"},"qwen3.8-flash-next":{"name":"Qwen3.8 Flash Next","limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.2},"updated":"2026-08-27"},"mimo-v2.6-pro-rl":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":0.8},"updated":"2026-09-22"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1},"updated":"2026-08-14"},"muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":131072},"cost":{"input":0.25,"output":1},"updated":"2026-08-10"},"nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":131072,"output":8192},"cost":{"input":0.05,"output":0.15},"updated":"2026-06-04"},"mimo-v2.6-flash-rl":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.25},"updated":"2026-09-22"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.2,"output":0.9},"updated":"2026-06-01"},"nemotron-3-nano-omni-30b-a3b-reasoning":{"name":"Nemotron 3 Nano Omni 30B A3B Reasoning","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.25},"updated":"2026-04-28"}}},"perplexity-agent":{"name":"Perplexity Agent","npm":"@ai-sdk/openai","models":{"xai/grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast (Non-Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"updated":"2026-07-31"},"nvidia/nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B","limit":{"context":1000000,"output":32000},"cost":{"input":0.25,"output":2.5},"updated":"2026-03-11"},"perplexity/sonar":{"name":"Sonar","limit":{"context":128000,"output":8192},"cost":{"input":0.25,"output":2.5,"cache_read":0.0625},"updated":"2025-09-01"},"moonshot-ai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-07-30"},"moonshot-ai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-30"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-04-16"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-02-17"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1},"updated":"2025-10-15"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-02-05"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2025-09-29"},"anthropic/claude-opus-4-5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2025-11-24"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-05"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-05"}}},"gitlab":{"name":"GitLab Duo","npm":"gitlab-ai-provider","models":{"duo-chat-haiku-4-5":{"name":"Agentic Chat (Claude Haiku 4.5)","limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-08"},"duo-chat-gpt-5-3-codex":{"name":"Agentic Chat (GPT-5.3 Codex)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-02-05"},"duo-chat-opus-5":{"name":"Agentic Chat (Claude Opus 5)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-24"},"duo-chat-sonnet-5":{"name":"Agentic Chat (Claude Sonnet 5)","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-30"},"duo-chat-gpt-5-4-nano":{"name":"Agentic Chat (GPT-5.4 Nano)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-03-17"},"duo-chat-gpt-6-1-sol":{"name":"Agentic Chat (GPT-6.1 Sol)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-29"},"duo-chat-gpt-5-1":{"name":"Agentic Chat (GPT-5.1)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"duo-chat-gpt-5-6-sol":{"name":"Agentic Chat (GPT-5.6 Sol)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-09"},"duo-chat-gpt-6-astra":{"name":"Agentic Chat (GPT-6 Astra)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-04"},"duo-chat-opus-4-5":{"name":"Agentic Chat (Claude Opus 4.5)","limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-08"},"duo-chat-opus-4-8":{"name":"Agentic Chat (Claude Opus 4.8)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-05-28"},"duo-chat-opus-4-6":{"name":"Agentic Chat (Claude Opus 4.6)","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-05"},"duo-chat-gpt-6-sol":{"name":"Agentic Chat (GPT-6 Sol)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-22"},"duo-chat-sonnet-4-5":{"name":"Agentic Chat (Claude Sonnet 4.5)","limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-08"},"duo-chat-gpt-5-4-mini":{"name":"Agentic Chat (GPT-5.4 Mini)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-03-17"},"duo-chat-gpt-5-5":{"name":"Agentic Chat (GPT-5.5)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-04-23"},"duo-chat-opus-5-5":{"name":"Agentic Chat (Claude Opus 5.5)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-22"},"duo-chat-gpt-5-mini":{"name":"Agentic Chat (GPT-5 Mini)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"duo-chat-sonnet-5-5":{"name":"Agentic Chat (Claude Sonnet 5.5)","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-28"},"duo-chat-opus-4-7":{"name":"Agentic Chat (Claude Opus 4.7)","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-16"},"duo-chat-fable-5":{"name":"Agentic Chat (Claude Fable 5)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-09"},"duo-chat-gpt-5-codex":{"name":"Agentic Chat (GPT-5 Codex)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"duo-chat-gpt-5-4":{"name":"Agentic Chat (GPT-5.4)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-03-05"},"duo-chat-gpt-5-6-terra":{"name":"Agentic Chat (GPT-5.6 Terra)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-09"},"duo-chat-gpt-5-6-luna":{"name":"Agentic Chat (GPT-5.6 Luna)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-09"},"duo-chat-sonnet-4-6":{"name":"Agentic Chat (Claude Sonnet 4.6)","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-17"},"duo-chat-gpt-5-2-codex":{"name":"Agentic Chat (GPT-5.2 Codex)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"duo-chat-fable-5-1":{"name":"Agentic Chat (Claude Fable 5.1)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-01"},"duo-chat-gpt-6-luna":{"name":"Agentic Chat (GPT-6 Luna)","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-22"},"duo-chat-gpt-5-2":{"name":"Agentic Chat (GPT-5.2)","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-01-23"}}},"sakana":{"name":"Sakana AI","npm":"@ai-sdk/openai-compatible","models":{"sakana-namazu":{"name":"Sakana Namazu","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"updated":"2026-08-03"},"fugu":{"name":"Fugu","limit":{"context":1000000,"output":1000000},"updated":"2026-06-15"},"fugu-ultra-20260615":{"name":"Fugu Ultra","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"}}},"arcee":{"name":"Arcee","npm":"@ai-sdk/openai-compatible","models":{"trinity-large-thinking":{"name":"Trinity Large Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":0.8,"cache_read":0.06},"updated":"2026-05-28"},"zai-org/glm-5.2":{"name":"GLM-5.2","limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":512000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.2},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"deepseek/deepseek-v4-flash-latest":{"name":"DeepSeek V4 Flash Latest","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-07-31"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"}}},"qihang-ai":{"name":"QiHang","npm":"@ai-sdk/openai-compatible","models":{"claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":0.43,"output":2.14},"updated":"2025-09-29"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.07,"output":0.43},"updated":"2025-12-17"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.71},"updated":"2025-12-17"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2},"updated":"2025-12-11"},"gemini-3-pro-preview":{"name":"Gemini 3 Pro Preview","limit":{"context":1000000,"output":65000},"cost":{"input":0.57,"output":3.43},"updated":"2025-11-19"},"gpt-5-mini":{"name":"GPT-5-Mini","limit":{"context":200000,"output":64000},"cost":{"input":0.04,"output":0.29},"updated":"2025-09-15"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":0.14,"output":0.71},"updated":"2025-10-01"},"claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":32000},"cost":{"input":0.71,"output":3.57},"updated":"2025-11-01"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":0.14,"output":1.14},"updated":"2025-12-11"}}},"reflection":{"name":"Reflection","npm":"@ai-sdk/openai-compatible","models":{"Beam-1.0-501B-A23B":{"name":"Beam 1.0 501B A23B","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-16"}}},"minimax":{"name":"MiniMax (minimax.io)","npm":"@ai-sdk/anthropic","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"MiniMax-M3.1-Flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1000000,"output":512000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-19"},"MiniMax-M2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"MiniMax-M2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-25"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"}}},"xai":{"name":"xAI","npm":"@ai-sdk/xai","models":{"grok-imagine-image":{"name":"Grok Imagine Image","limit":{"context":16000,"output":0},"updated":"2026-01-28"},"grok-4.20-multi-agent-0309":{"name":"Grok 4.20 Multi-Agent","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"grok-4.20-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"grok-imagine-image-quality":{"name":"Grok Imagine Image Quality","limit":{"context":16000,"output":0},"updated":"2026-04-03"},"grok-imagine-video-1.5-lite":{"name":"Grok Imagine Video 1.5 Lite","limit":{"context":1024,"output":0},"updated":"2026-10-01"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"grok-imagine-video":{"name":"Grok Imagine Video","limit":{"context":1024,"output":0},"updated":"2026-01-28"},"grok-imagine-video-1.5":{"name":"Grok Imagine Video 1.5","limit":{"context":1024,"output":0},"updated":"2026-05-30"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"}}},"fastrouter":{"name":"FastRouter","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4},"updated":"2026-03-18"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-18"},"openai/gpt-realtime-1.5":{"name":"GPT Realtime 1.5","limit":{"context":32000,"output":4096},"cost":{"input":4,"output":16},"updated":"2025-06-01"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5},"updated":"2026-03-17"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-04-23"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.05,"output":0.2},"updated":"2025-08-05"},"openai/gpt-image-2":{"name":"GPT Image 2","limit":{"context":128000,"output":0},"updated":"2026-04-21"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-02-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25},"updated":"2026-03-17"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2},"updated":"2026-04-16"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5},"updated":"2026-04-17"},"x-ai/grok-4":{"name":"Grok 4","limit":{"context":256000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.75,"cache_write":15},"updated":"2025-07-09"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48},"updated":"2026-04-24"},"sarvam/sarvam-30b":{"name":"Sarvam 30B","limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.1},"updated":"2026-02-18"},"sarvam/sarvam-105b":{"name":"Sarvam 105B","limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16},"updated":"2025-09-01"},"moonshotai/kimi-k2":{"name":"Kimi K2","limit":{"context":131072,"output":32768},"cost":{"input":0.55,"output":2.2},"updated":"2025-07-11"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5},"updated":"2026-04-21"},"anthropic/claude-opus-4.1":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"anthropic/claude-sonnet-4":{"name":"Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"google/veo3.1":{"name":"Veo 3.1","limit":{"context":400000,"output":0},"updated":"2026-05-01"},"google/veo3.1-fast":{"name":"Veo 3.1 Fast","limit":{"context":400000,"output":0},"updated":"2026-05-01"},"google/imagen-4.0-ultra":{"name":"Imagen 4 Ultra","limit":{"context":480,"output":0},"updated":"2025-05-20"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.0375},"updated":"2025-06-17"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-02-19"},"google/gemini-3-pro-image-preview":{"name":"Nano Banana Pro Preview","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12},"updated":"2025-11-20"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38},"updated":"2026-04-02"},"google/gemini-3.1-flash-image-preview":{"name":"Nano Banana 2 Preview","limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2026-02-26"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31},"updated":"2025-06-17"},"google/veo3.1-lite":{"name":"Veo 3.1 Lite","limit":{"context":400000,"output":0},"updated":"2026-05-01"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"updated":"2026-05-19"},"google/imagen-4.0-fast":{"name":"Imagen 4 Fast","limit":{"context":480,"output":0},"updated":"2025-05-20"},"bytedance/seedance-2":{"name":"Seedance 2","limit":{"context":4096,"output":0},"updated":"2026-04-01"},"leonardo-ai/lucid-origin":{"name":"Lucid Origin","limit":{"context":4096,"output":0},"updated":"2025-06-01"},"leonardo-ai/lucid-realism":{"name":"Lucid Realism","limit":{"context":4096,"output":0},"updated":"2025-06-01"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.05,"output":3.5},"updated":"2026-04-07"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":0.95,"output":3.15},"updated":"2026-02-11"},"qwen/qwen3-coder":{"name":"Qwen3 Coder","limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1.2},"updated":"2025-07-23"},"deepseek-ai/deepseek-r1-distill-llama-70b":{"name":"DeepSeek R1 Distill Llama 70B","limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.14},"updated":"2025-01-23"},"wanx/wan-v2-6":{"name":"Wan 2.6","limit":{"context":400000,"output":0},"updated":"2025-12-01"}}},"aiand":{"name":"ai&","npm":"@ai-sdk/openai-compatible","models":{"zai-org/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048550,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai-org/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.3},"updated":"2026-08-14"},"zai-org/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.3},"updated":"2026-06-13"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.08},"updated":"2025-08-05"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5,"cache_read":0.2},"updated":"2026-06-12"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":12.5,"cache_read":0.5},"updated":"2026-07-16"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2026-04-02"},"motif-technologies/motif-3":{"name":"Motif 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2,"cache_read":0.2},"updated":"2026-08-07"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2,"cache_read":0.2},"updated":"2026-04-22"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.2},"updated":"2026-08-14"},"deepseek-ai/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":1,"output":2.5,"cache_read":0.25},"updated":"2026-04-24"},"deepseek-ai/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":0.6,"cache_read":0.02},"updated":"2026-09-10"},"deepseek-ai/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.25,"cache_read":0.08},"updated":"2026-04-24"}}},"neosmith":{"name":"NeoSmith","npm":"@ai-sdk/openai","models":{"neosmith.neolite":{"name":"NeoSmith NeoLite","limit":{"context":512000,"output":64000},"cost":{"input":0.6,"output":2.4,"cache_read":0.08,"cache_write":0},"updated":"2026-08-03"},"neosmith.intelligent-maestro":{"name":"NeoSmith Maestro","limit":{"context":1000000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.35,"cache_write":0},"updated":"2026-08-08"},"neosmith.intelligent-basic":{"name":"NeoSmith Basic","limit":{"context":1000000,"output":128000},"cost":{"input":1.17,"output":4.37,"cache_read":0.22,"cache_write":0},"updated":"2026-08-03"},"neosmith.intelligent-pro":{"name":"NeoSmith Pro","limit":{"context":1000000,"output":128000},"cost":{"input":1.81,"output":8.39,"cache_read":0.3,"cache_write":0},"updated":"2026-07-18"}}},"cohere":{"name":"Cohere","npm":"@ai-sdk/cohere","models":{"command-r7b-12-2024":{"name":"Command R7B","limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2024-12-02"},"tiny-aya-fire":{"name":"Tiny Aya Fire","limit":{"context":8000,"output":8000},"updated":"2026-02-17"},"command-r-08-2024":{"name":"Command R","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"updated":"2024-08-30"},"c4ai-aya-vision-32b":{"name":"Aya Vision 32B","limit":{"context":16000,"output":4000},"updated":"2025-05-14"},"tiny-aya-water":{"name":"Tiny Aya Water","limit":{"context":8000,"output":8000},"updated":"2026-02-17"},"c4ai-aya-expanse-32b":{"name":"Aya Expanse 32B","limit":{"context":128000,"output":4000},"updated":"2024-10-24"},"command-a-plus-05-2026":{"name":"Command A Plus","limit":{"context":128000,"output":64000},"cost":{"input":2.5,"output":10},"updated":"2026-06-09"},"command-a-03-2025":{"name":"Command A","limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"command-r-plus-08-2024":{"name":"Command R+","limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"updated":"2024-08-30"},"command-r7b-arabic-02-2025":{"name":"Command R7B Arabic","limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2025-02-27"},"command-a-reasoning-08-2025":{"name":"Command A Reasoning","limit":{"context":256000,"output":32000},"cost":{"input":2.5,"output":10},"updated":"2025-08-21"},"north-small-translate-09-2026":{"name":"North Small Translate","limit":{"context":32768,"output":16000},"cost":{"input":0,"output":0},"updated":"2026-09-09"},"tiny-aya-global":{"name":"Tiny Aya Global","limit":{"context":8000,"output":8000},"updated":"2026-02-17"},"north-mini-code-1-0":{"name":"North Mini Code","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-06-09"},"command-a-vision-07-2025":{"name":"Command A Vision","limit":{"context":128000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-07-31"},"tiny-aya-earth":{"name":"Tiny Aya Earth","limit":{"context":8000,"output":8000},"updated":"2026-02-17"},"command-a-translate-08-2025":{"name":"Command A Translate","limit":{"context":8000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-08-28"}}},"stepfun":{"name":"StepFun (China)","npm":"@ai-sdk/openai-compatible","models":{"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":65536},"cost":{"input":0.959,"output":2.741,"cache_read":0.048},"updated":"2026-09-20"},"step-2-16k":{"name":"Step 2 (16K)","limit":{"context":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04},"updated":"2026-02-13"},"stepaudio-2.5-asr":{"name":"StepAudio 2.5 ASR","limit":{"context":0,"output":0},"updated":"2026-07-02"},"step-1-32k":{"name":"Step 1 (32K)","limit":{"context":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41},"updated":"2026-02-13"},"step-3.5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-04-02"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037},"updated":"2026-06-29"},"step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-06-15"},"step-tts-2":{"name":"Step TTS 2","limit":{"context":0,"output":0},"updated":"2026-07-02"},"stepaudio-2.5-tts":{"name":"StepAudio 2.5 TTS","limit":{"context":0,"output":0},"updated":"2026-07-02"}}},"opencode-go":{"name":"OpenCode Go","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-05"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5},"updated":"2026-06-02"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-09-22"},"step-5-preview-free":{"name":"Step 5 Preview Free","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-20"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro (New)","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-04-24"},"hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"gemini-4-argon-contributor":{"name":"Gemini 4 Argon Contributor","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-13"},"longcat-2.5-preview-free":{"name":"LongCat 2.5 Preview Free","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-25"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"cat-jam-free":{"name":"Cat Jam Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-12"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"minimax-m3.1-flash-free":{"name":"MiniMax M3.1 Flash Free","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-19"},"mimo-v2.5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":1048576,"output":128000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-22"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"mimo-v2.5":{"name":"MiMo V2.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"longcat-2.0":{"name":"LongCat-2.0","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-06-30"},"hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"beam-free":{"name":"Beam Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-16"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-05-31"},"muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"space-bunny":{"name":"Space Bunny","limit":{"context":1048576,"output":524288},"cost":{"input":0.15,"output":0.6,"cache_read":0.03,"cache_write":0},"updated":"2026-09-23"}}},"sambanova":{"name":"SambaNova","npm":"@ai-sdk/openai-compatible","models":{"gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.38,"output":1.15},"updated":"2026-04-02"},"Meta-Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":3072},"cost":{"input":0.6,"output":1.2},"updated":"2024-12-06"},"DeepSeek-V3.2":{"name":"DeepSeek V3.2","limit":{"context":32768,"output":7168},"cost":{"input":3,"output":4.5},"updated":"2025-12-01"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":1048576},"cost":{"input":0.6,"output":2.4,"cache_read":0.06},"updated":"2026-06-01"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.22,"output":0.59},"updated":"2025-08-05"},"DeepSeek-V3.1":{"name":"DeepSeek-V3.1","limit":{"context":131072,"output":7168},"cost":{"input":3,"output":4.5},"updated":"2025-08-21"}}},"agentrouter":{"name":"AgentRouter","npm":"@ai-sdk/openai-compatible","models":{"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"updated":"2026-05-28"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"updated":"2026-08-14"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"updated":"2026-07-09"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"updated":"2026-04-24"}}},"crusoe":{"name":"Crusoe","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.25,"output":0.75,"cache_read":0.13},"updated":"2024-12-06"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2,"cache_read":0.05},"updated":"2025-08-05"},"nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B":{"name":"Nemotron 3 Nano Omni 30B A3B Reasoning","limit":{"context":256000,"output":65536},"cost":{"input":0.3,"output":1.83,"cache_read":0.3},"updated":"2026-04-28"},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.4,"cache_read":0.15},"updated":"2026-03-11"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.03},"updated":"2025-12-15"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.8,"cache_read":0.11},"updated":"2025-07-21"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.35},"updated":"2026-04-21"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4,"cache_read":0.14},"updated":"2026-04-02"},"zai/GLM-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4.4,"cache_read":0.25},"updated":"2026-04-07"},"zai/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.5,"cache_read":0.25},"updated":"2025-03-24"}}},"digitalocean":{"name":"DigitalOcean","npm":"@ai-sdk/openai-compatible","models":{"openai-gpt-4o":{"name":"OpenAI GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"qwen3.5-397b-a17b":{"name":"Qwen 3.5 397B A17B","limit":{"context":131072,"output":131072},"cost":{"input":0.55,"output":3.5,"cache_read":0.111},"updated":"2026-04-30"},"glm-5.3-flash":{"name":"GLM5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"anthropic-claude-sonnet-4":{"name":"Claude Sonnet 4","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"llama3-8b-instruct":{"name":"Llama 3.1 Instruct (8B)","limit":{"context":131072,"output":131072},"cost":{"input":0.198,"output":0.198},"updated":"2024-07-23"},"openai-gpt-4o-mini":{"name":"OpenAI GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"mistral-7b-instruct-v0.3":{"name":"Mistral 7B Instruct v0.3","limit":{"context":32768,"output":32768},"updated":"2024-05-22"},"openai-gpt-5.3-codex":{"name":"OpenAI GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"anthropic-claude-opus-4":{"name":"Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-07-31"},"openai-gpt-oss-20b":{"name":"OpenAI GPT-oss-20b","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.45,"cache_read":0.01},"updated":"2026-04-16"},"e5-large-v2":{"name":"E5 Large v2","limit":{"context":512,"output":1024},"cost":{"input":0.02,"output":0},"updated":"2026-04-30"},"openai-gpt-5.2":{"name":"OpenAI GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai-gpt-5.6-sol":{"name":"OpenAI GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4},"updated":"2026-07-09"},"anthropic-claude-4.5-sonnet":{"name":"Anthropic Claude 4.5 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic-claude-5-sonnet":{"name":"Anthropic Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic-claude-3.5-sonnet":{"name":"Claude 3.5 Sonnet","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2024-10-22"},"glm-5.3":{"name":"GLM5.3","limit":{"context":1048576,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"openai-gpt-image-2":{"name":"OpenAI GPT Image 2","limit":{"context":0,"output":16384},"cost":{"input":8,"output":30},"updated":"2025-04-24"},"anthropic-claude-fable-5.1":{"name":"Anthropic Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic-claude-opus-4.5":{"name":"Anthropic Claude Opus 4.5","limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"openai-o3-mini":{"name":"OpenAI o3 mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai-gpt-6-astra":{"name":"OpenAI GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1},"updated":"2026-09-04"},"all-mini-lm-l6-v2":{"name":"All-MiniLM-L6-v2","limit":{"context":256,"output":384},"cost":{"input":0.009,"output":0},"updated":"2026-04-16"},"nemotron-3-nano-omni":{"name":"Nemotron 3 Nano Omni","limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":0.9,"cache_read":0.1},"updated":"2026-04-28"},"anthropic-claude-sonnet-5.5":{"name":"Anthropic Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"anthropic-claude-fable-5":{"name":"Anthropic Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-12"},"mistral-3-14B":{"name":"Ministral 3 14B","limit":{"context":262144,"output":128000},"cost":{"input":0.2,"output":0.2,"cache_read":0.04},"updated":"2026-04-30"},"openai-o3":{"name":"OpenAI o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.7,"cache_read":0.203},"updated":"2026-04-16"},"openai-gpt-image-1":{"name":"GPT Image 1","limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"updated":"2025-04-24"},"anthropic-claude-opus-4.8":{"name":"Anthropic Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-29"},"deepseek-v4-pro":{"name":"Deepseek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.348},"updated":"2026-04-24"},"qwen3-tts-voicedesign":{"name":"Qwen3 TTS VoiceDesign","limit":{"context":32768,"output":1},"updated":"2026-04-30"},"bge-m3":{"name":"BGE M3","limit":{"context":8192,"output":1024},"cost":{"input":0.02,"output":0},"updated":"2026-04-30"},"gemma-4-31B-it":{"name":"Gemma 4","limit":{"context":256000,"output":8192},"cost":{"input":0.18,"output":0.5,"cache_read":0.036},"updated":"2026-04-30"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.21},"updated":"2026-06-13"},"llama-4-maverick":{"name":"Llama 4 Maverick","limit":{"context":128000,"output":16384},"cost":{"input":0.25,"output":0.87,"cache_read":0.05},"updated":"2026-04-30"},"qwen3-embedding-0.6b":{"name":"Qwen3 Embedding 0.6B","limit":{"context":8000,"output":1024},"cost":{"input":0.04,"output":0},"updated":"2026-04-16"},"openai-gpt-5.5":{"name":"OpenAI GPT-5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-30"},"mistral-nemo-instruct-2407":{"name":"Mistral Nemo Instruct","limit":{"context":128000,"output":16384},"cost":{"input":0.3,"output":0.3},"updated":"2024-07-18"},"bge-reranker-v2-m3":{"name":"BGE Reranker v2 M3","limit":{"context":8192,"output":1},"cost":{"input":0.01,"output":0},"updated":"2026-04-30"},"openai-gpt-image-1.5":{"name":"OpenAI GPT Image 1.5","limit":{"context":0,"output":16384},"cost":{"input":5,"output":10,"cache_read":1},"updated":"2025-11-25"},"anthropic-claude-opus-4.7":{"name":"Anthropic Claude Opus 4.7","limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"multi-qa-mpnet-base-dot-v1":{"name":"Multi-QA-mpnet-base-dot-v1","limit":{"context":512,"output":768},"cost":{"input":0.009,"output":0},"updated":"2026-04-16"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":163840,"output":163840},"cost":{"input":1.3,"output":4.3,"cache_read":0.26},"updated":"2026-04-07"},"anthropic-claude-3-opus":{"name":"Claude 3 Opus","limit":{"context":200000,"output":4096},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2024-02-29"},"openai-gpt-4.1":{"name":"OpenAI GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai-gpt-5.2-pro":{"name":"OpenAI GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"nemotron-nano-12b-v2-vl":{"name":"Nemotron-nano 12b v2-vl","limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.6,"cache_read":0.04},"updated":"2025-10-28"},"openai-o1":{"name":"OpenAI o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-04-21"},"anthropic-claude-opus-5.5":{"name":"Anthropic Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic-claude-haiku-4.5":{"name":"Anthropic Claude Haiku 4.5","limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"openai-gpt-5.4-nano":{"name":"OpenAI GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"mimo-v2.5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3,"cache_read":0.16},"updated":"2026-04-22"},"openai-gpt-5":{"name":"OpenAI GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai-gpt-5.6-terra":{"name":"OpenAI GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-07-09"},"arcee-trinity-large-thinking":{"name":"Arcee Trinity Large Thinking (Public Preview)","limit":{"context":128000,"output":32000},"cost":{"input":0.25,"output":0.9,"cache_read":0.06},"updated":"2026-05-28"},"openai-gpt-6-1-sol":{"name":"OpenAI GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-09-29"},"nemotron-3.5-super-vl":{"name":"NVIDIA Nemotron 3.5 Super VL","limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":0.65,"cache_read":0.06},"updated":"2026-10-15"},"deepseek-v3":{"name":"DeepSeek V3","limit":{"context":163840,"output":131072},"updated":"2025-03-24"},"anthropic-claude-3.5-haiku":{"name":"Claude 3.5 Haiku","limit":{"context":200000,"output":8192},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1},"updated":"2024-11-05"},"nvidia-nemotron-3-super-120b":{"name":"NVIDIA Nemotron 3 Super 120B (Public Preview)","limit":{"context":1000000,"output":32768},"cost":{"input":0.3,"output":0.65,"cache_read":0.06},"updated":"2026-03-11"},"openai-gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai-gpt-6-sol":{"name":"OpenAI GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"updated":"2026-09-22"},"openai-gpt-oss-120b":{"name":"OpenAI GPT-oss-120b","limit":{"context":128000,"output":4096},"cost":{"input":0.1,"output":0.7,"cache_read":0.02},"updated":"2026-04-16"},"deepseek-3.2":{"name":"Deepseek 3.2","limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.6,"cache_read":0.15},"updated":"2026-04-30"},"qwen3.8-max":{"name":"Qwen3.8-Max","limit":{"context":1000000,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-08-03"},"openai-gpt-5.4-pro":{"name":"OpenAI GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai-gpt-5-nano":{"name":"OpenAI GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"nemotron-3-ultra-550b":{"name":"Nemotron 3 Ultra","limit":{"context":131072,"output":131072},"cost":{"input":0.9,"output":1.7,"cache_read":0.18},"updated":"2026-06-12"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"openai-gpt-6-luna":{"name":"OpenAI GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01},"updated":"2026-09-22"},"qwen-2.5-14b-instruct":{"name":"Qwen 2.5 14B Instruct","limit":{"context":131072,"output":131072},"updated":"2024-09-19"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"anthropic-claude-4.6-sonnet":{"name":"Anthropic Claude Sonnet 4.6","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":1.7,"cache_read":0.09},"updated":"2026-04-30"},"anthropic-claude-3.7-sonnet":{"name":"Claude 3.7 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-02-24"},"stable-diffusion-3.5-large":{"name":"Stable Diffusion 3.5 Large","limit":{"context":256,"output":1},"cost":{"input":0.08,"output":0},"updated":"2026-04-30"},"anthropic-claude-opus-5":{"name":"Anthropic Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"glm-5":{"name":"GLM 5","limit":{"context":64000,"output":64000},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-04-16"},"openai-gpt-5.4":{"name":"OpenAI GPT-5.4","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"llama3.3-70b-instruct":{"name":"Llama 3.3 Instruct (70B)","limit":{"context":128000,"output":4096},"cost":{"input":0.65,"output":0.65},"updated":"2024-12-06"},"anthropic-claude-4.1-opus":{"name":"Anthropic Claude 4.1 Opus","limit":{"context":200000,"output":8192},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"deepseek-4-flash":{"name":"Deepseek V4 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-05-29"},"alibaba-qwen3-32b":{"name":"Qwen3 32B","limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.55},"updated":"2026-04-16"},"minimax-m2.5":{"name":"MiniMax M2.5 (Public Preview)","limit":{"context":65536,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-04-16"},"openai-gpt-5.4-mini":{"name":"OpenAI GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"deepseek-r1-distill-llama-70b":{"name":"DeepSeek R1 Distill Llama 70B","limit":{"context":32678,"output":8192},"cost":{"input":0.99,"output":0.99},"updated":"2025-01-30"},"anthropic-claude-opus-4.6":{"name":"Anthropic Claude Opus 4.6","limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic-claude-5.5-haiku":{"name":"Anthropic Claude 5.5 Haiku","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"ministral-3-8b-instruct-2512":{"name":"Ministral 3 8B","limit":{"context":262144,"output":262144},"updated":"2025-12-15"},"openai-gpt-5.6-luna":{"name":"OpenAI GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"updated":"2026-07-09"},"wan2-2-t2v-a14b":{"name":"Wan2.2-T2V-A14B","limit":{"context":100,"output":1},"cost":{"input":0.6,"output":0},"updated":"2026-04-30"},"openai-gpt-5-mini":{"name":"OpenAI GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"nemotron-3-nano-30b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":262144},"updated":"2025-04-14"},"gte-large-en-v1.5":{"name":"GTE Large (v1.5)","limit":{"context":8192,"output":1024},"cost":{"input":0.09,"output":0},"updated":"2026-04-16"},"fal-ai/fast-sdxl":{"name":"Fast SDXL","limit":{"context":0,"output":0},"updated":"2026-04-16"},"fal-ai/stable-audio-25/text-to-audio":{"name":"Stable Audio 2.5 (Text-to-Audio)","limit":{"context":0,"output":0},"updated":"2026-04-16"},"fal-ai/elevenlabs/tts/multilingual-v2":{"name":"ElevenLabs Multilingual TTS v2","limit":{"context":0,"output":0},"updated":"2026-04-16"},"fal-ai/flux/schnell":{"name":"FLUX.1 [schnell]","limit":{"context":0,"output":0},"updated":"2026-04-16"}}},"snowflake-cortex":{"name":"Snowflake Cortex","npm":"@ai-sdk/openai-compatible","models":{"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"updated":"2026-04-16"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"updated":"2026-05-28"},"openai-gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"updated":"2025-12-11"},"openai-gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"updated":"2026-07-09"},"openai-gpt-5.1":{"name":"GPT-5.1","limit":{"context":272000,"output":8192},"updated":"2025-11-13"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":16384},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"updated":"2026-07-24"},"mistral-large2":{"name":"Mistral Large (latest)","limit":{"context":262144,"output":262144},"updated":"2025-12-02"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":16384},"updated":"2025-10-15"},"openai-gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"updated":"2026-04-23"},"deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":128000,"output":32768},"updated":"2025-05-29"},"openai-gpt-4.1":{"name":"GPT-4.1","limit":{"context":128000,"output":32000},"updated":"2025-04-14"},"openai-gpt-5":{"name":"GPT-5","limit":{"context":272000,"output":8192},"updated":"2025-08-07"},"snowflake-llama3.3-70b":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"updated":"2024-12-06"},"openai-gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"updated":"2026-07-09"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"updated":"2026-03-13"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":16384},"updated":"2025-09-29"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"updated":"2026-06-30"},"openai-gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":272000,"output":8192},"updated":"2025-08-07"},"gemini-3.1-pro":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"updated":"2026-02-19"},"openai-gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"updated":"2026-03-05"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"updated":"2025-11-24"},"openai-gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"updated":"2026-07-09"},"openai-gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":272000,"output":8192},"updated":"2025-08-07"}}},"modelis":{"name":"Modelis","npm":"@ai-sdk/openai-compatible","models":{"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-06-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87},"updated":"2026-04-24"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5},"updated":"2025-06-17"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.0983,"output":0.1966},"updated":"2026-04-24"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10},"updated":"2025-06-17"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.768,"output":3.072},"updated":"2026-06-02"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":3,"output":9},"updated":"2026-05-21"}}},"runinfra":{"name":"RunInfra","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2026-08-26"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.01},"updated":"2026-08-11"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2026-08-14"},"Inferact/Qwen3.8-2.4T-A95B-NVFP4":{"name":"Qwen3.8 2.4T A95B (NVFP4)","limit":{"context":262144,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-08-12"},"ornith-ai/Ornith-1.5-35B-A3B":{"name":"Ornith 1.5 35B A3B","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2026-08-23"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":32768},"cost":{"input":0.13,"output":0.27,"cache_read":0.01},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":1.9,"cache_read":0.03},"updated":"2026-08-22"}}},"atomic-chat":{"name":"Atomic Chat","npm":"@ai-sdk/openai-compatible","models":{"gemma-4-E4B-it-MLX-4bit":{"name":"Gemma 4 E4B Instruct (MLX 4-bit)","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"Qwen3_5-9B-Q4_K_M":{"name":"Qwen 3.5 9B (Q4_K_M)","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-04"},"gemma-4-E4B-it-IQ4_XS":{"name":"Gemma 4 E4B Instruct (IQ4_XS)","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"Meta-Llama-3_1-8B-Instruct-GGUF":{"name":"Meta Llama 3.1 8B Instruct (GGUF)","limit":{"context":131072,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-07-23"},"Qwen3_5-9B-MLX-4bit":{"name":"Qwen 3.5 9B (MLX 4-bit)","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-04"}}},"infomaniak":{"name":"Infomaniak","npm":"@ai-sdk/openai-compatible","models":{"mini_lm_l12_v2":{"name":"All-MiniLM-L12-v2","limit":{"context":128,"output":384},"cost":{"input":0,"output":0},"updated":"2026-08-01"},"bge_multilingual_gemma2":{"name":"BGE Multilingual Gemma2","limit":{"context":8000,"output":3584},"cost":{"input":0.08,"output":0},"updated":"2026-08-01"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8":{"name":"Nemotron 3 Nano 30B A3B FP8","limit":{"context":1000000,"output":262144},"cost":{"input":0.06,"output":0.25},"updated":"2026-08-01"},"swiss-ai/Apertus-v1.5-70B":{"name":"Apertus v1.5 70B","limit":{"context":100000,"output":8192},"cost":{"input":0.87,"output":3.1},"updated":"2026-08-01"},"Qwen/Qwen3.5-397B-A17B-FP8":{"name":"Qwen3.5 397B-A17B FP8","limit":{"context":200000,"output":65536},"cost":{"input":0.99,"output":4.46},"updated":"2026-08-01"},"Qwen/Qwen3.5-122B-A10B-FP8":{"name":"Qwen3.5 122B-A10B FP8","limit":{"context":200000,"output":65536},"cost":{"input":0.5,"output":3.97},"updated":"2026-08-01"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":256000,"output":256000},"cost":{"input":0.74,"output":3.72},"updated":"2026-08-01"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":100000,"output":32768},"cost":{"input":0.25,"output":0.5},"updated":"2026-08-01"},"mistralai/Mistral-Small-4-119B-2603":{"name":"Mistral Small 4","limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":0.93},"updated":"2026-08-01"},"mistralai/Ministral-3-14B-Instruct-2512":{"name":"Ministral 3 14B Instruct","limit":{"context":100000,"output":25600},"cost":{"input":0.37,"output":0.5},"updated":"2026-08-01"}}},"databricks":{"name":"Databricks","npm":"@ai-sdk/openai-compatible","models":{"databricks-claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"databricks-kimi-k2-7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"databricks-glm-5-2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"databricks-gpt-5-4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"databricks-gemini-2-5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"databricks-gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"databricks-gemini-3-1-pro":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"databricks-claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"databricks-gemini-3-pro":{"name":"Gemini 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-18"},"databricks-gpt-5-5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"databricks-claude-opus-4-1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"databricks-claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"databricks-claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"databricks-gpt-5-1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"databricks-gpt-5-4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"databricks-gemini-3-1-flash-lite":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-03-03"},"databricks-claude-sonnet-4":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"databricks-gemini-2-5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"databricks-gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"databricks-gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.072,"output":0.28},"updated":"2025-08-05"},"databricks-gpt-5-4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"databricks-gpt-5-2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"databricks-claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"databricks-gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2},"updated":"2025-08-05"},"databricks-gpt-5-6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-07-09"},"databricks-gpt-5-6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-07-09"},"databricks-gemini-3-5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"databricks-claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"databricks-gpt-5-6-luna":{"name":"GPT-5.6 Luna","limit":{"context":400000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1},"updated":"2026-07-09"},"databricks-gemini-3-flash":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"databricks-gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"}}},"azure":{"name":"Azure","npm":"@ai-sdk/azure","models":{"gpt-image-1":{"name":"GPT-Image-1","limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"updated":"2025-04-24"},"o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"ministral-3b":{"name":"Ministral 3B","limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04},"updated":"2024-10-22"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"phi-4":{"name":"Phi-4","limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-08-07"},"gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"cohere-embed-v-4-0":{"name":"Embed v4","limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0},"updated":"2025-04-15"},"gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"mistral-small-2503":{"name":"Mistral Small 3.1","limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3},"updated":"2025-03-01"},"grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast (Non-Reasoning)","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-06-27"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"grok-4-20-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":262000,"output":8192},"cost":{"input":2,"output":6},"updated":"2026-04-08"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"phi-4-multimodal":{"name":"Phi-4-multimodal","limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32},"updated":"2024-12-11"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-24"},"text-embedding-3-large":{"name":"text-embedding-3-large","limit":{"context":8192,"output":3072},"cost":{"input":0.13,"output":0},"updated":"2024-01-25"},"gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-09-15"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"text-embedding-3-small":{"name":"text-embedding-3-small","limit":{"context":8192,"output":1536},"cost":{"input":0.02,"output":0},"updated":"2024-01-25"},"gpt-3.5-turbo-0125":{"name":"GPT-3.5 Turbo 0125","limit":{"context":16384,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2024-01-25"},"grok-4-20-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":262000,"output":8192},"cost":{"input":2,"output":6},"updated":"2026-04-08"},"llama-4-scout-17b-16e-instruct":{"name":"Llama 4 Scout 17B 16E Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78},"updated":"2025-04-05"},"model-router":{"name":"Model Router","limit":{"context":200000,"output":16384},"cost":{"input":0.14,"output":0},"updated":"2025-11-18"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3},"updated":"2026-02-06"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71},"updated":"2024-12-06"},"deepseek-v4-pro":{"name":"DeepSeek-V4-Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48},"updated":"2026-04-24"},"deepseek-v4.1-flash":{"name":"DeepSeek-V4.1-Flash","limit":{"context":1000000,"output":128000},"updated":"2026-09-10"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-11-18"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01},"updated":"2025-08-07"},"gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":128000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"deepseek-v3.2":{"name":"DeepSeek-V3.2","limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68},"updated":"2025-12-01"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":163840,"output":163840},"cost":{"input":1.35,"output":5.4},"updated":"2025-01-20"},"deepseek-v3.2-speciale":{"name":"DeepSeek-V3.2-Speciale","limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68},"updated":"2025-12-01"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.125},"updated":"2025-12-11"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"cohere-embed-v3-multilingual":{"name":"Embed v3 Multilingual","limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0},"updated":"2023-11-07"},"text-embedding-ada-002":{"name":"text-embedding-ada-002","limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0},"updated":"2022-12-15"},"gpt-image-2":{"name":"GPT-Image-2","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-04-21"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-08-07"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-04-22"},"phi-4-reasoning":{"name":"Phi-4-reasoning","limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"gpt-image-2.5-flare":{"name":"GPT Image 2.5 Flare","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-24"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-17"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":200000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-11-18"},"cohere-command-a":{"name":"Command A","limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"mistral-medium-2505":{"name":"Mistral Medium 3","limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2},"updated":"2025-05-07"},"deepseek-v4-flash":{"name":"DeepSeek-V4-Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51},"updated":"2026-04-24"},"gpt-4-turbo-vision":{"name":"GPT-4 Turbo Vision","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"gpt-image-1.5":{"name":"GPT-Image-1.5","limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"updated":"2025-11-25"},"o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"codex-mini":{"name":"Codex Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.5,"output":6,"cache_read":0.375},"updated":"2025-05-16"},"gpt-chat-latest":{"name":"GPT Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-28"},"claude-opus-4-1":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-11-18"},"cohere-embed-v3-english":{"name":"Embed v3 English","limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0},"updated":"2023-11-07"},"gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-14"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-14"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"codestral-2501":{"name":"Codestral 25.01","limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9},"updated":"2025-01-01"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"updated":"2026-09-21"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-14"},"gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama 4 Maverick 17B 128E Instruct FP8","limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1},"updated":"2025-04-05"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"phi-4-mini":{"name":"Phi-4-mini","limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3},"updated":"2024-12-11"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-01-14"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"phi-4-mini-reasoning":{"name":"Phi-4-mini-reasoning","limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3},"updated":"2024-12-11"},"claude-mythos-5":{"name":"Claude Mythos 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"phi-4-reasoning-plus":{"name":"Phi-4-reasoning-plus","limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5},"updated":"2024-12-11"},"claude-opus-4-5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-08-01"},"grok-4-1-fast-reasoning":{"name":"Grok 4.1 Fast (Reasoning)","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-06-27"},"gpt-3.5-turbo-1106":{"name":"GPT-3.5 Turbo 1106","limit":{"context":16384,"output":4096},"cost":{"input":1,"output":2},"updated":"2023-11-06"},"gpt-image-2.5-sunburst":{"name":"GPT Image 2.5 Sunburst","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"gpt-3.5-turbo-instruct":{"name":"GPT-3.5 Turbo Instruct","limit":{"context":4096,"output":4096},"cost":{"input":1.5,"output":2},"updated":"2023-09-21"}}},"scaleway":{"name":"Scaleway","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B","limit":{"context":256000,"output":16384},"cost":{"input":0.6,"output":3.6},"updated":"2026-03-17"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":260000,"output":16384},"cost":{"input":0.75,"output":2.25,"reasoning":8.4},"updated":"2026-03-17"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":256000,"output":32768},"cost":{"input":0.468,"output":0.936,"cache_read":0.0936,"reasoning":0.936},"updated":"2026-07-31"},"mistral-medium-3.5-128b":{"name":"Mistral Medium 3.5 128B","limit":{"context":256000,"output":16384},"cost":{"input":1.5,"output":7.5},"updated":"2026-04-29"},"pixtral-12b-2409":{"name":"Pixtral 12B 2409","limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2},"updated":"2026-03-17"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":256000,"output":16384},"cost":{"input":2.01,"output":6.15},"updated":"2026-08-14"},"mistral-small-3.2-24b-instruct-2506":{"name":"Mistral Small 3.2 24B Instruct (2506)","limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.35},"updated":"2026-03-17"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":100000,"output":16384},"cost":{"input":0.9,"output":0.9},"updated":"2026-03-17"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B","limit":{"context":128000,"output":16384},"cost":{"input":0.25,"output":1.5},"updated":"2026-05-22"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":256000,"output":32768},"cost":{"input":0.672,"output":2.016,"cache_read":0.134,"reasoning":2.016},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":256000,"output":16384},"cost":{"input":1.8,"output":5.5},"updated":"2026-06-13"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":256000,"output":16384},"cost":{"input":0.25,"output":0.5},"updated":"2026-05-22"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.8},"updated":"2026-03-17"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.684,"output":3.762,"cache_read":0.137,"reasoning":3.762},"updated":"2026-08-14"},"qwen3-embedding-8b":{"name":"Qwen3 Embedding 8B","limit":{"context":32768,"output":4096},"cost":{"input":0.1,"output":0},"updated":"2026-03-17"},"gpt-oss-120b":{"name":"GPT-OSS 120B","limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-17"},"whisper-large-v3":{"name":"Whisper Large v3","limit":{"context":0,"output":8192},"cost":{"input":0.003,"output":0},"updated":"2026-03-17"},"bge-multilingual-gemma2":{"name":"BGE Multilingual Gemma2","limit":{"context":8191,"output":3072},"cost":{"input":0.1,"output":0},"updated":"2025-06-15"}}},"openai":{"name":"OpenAI","npm":"@ai-sdk/openai","models":{"gpt-image-1":{"name":"gpt-image-1","limit":{"context":0,"output":0},"updated":"2025-04-24"},"o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"gpt-5.3-chat-latest":{"name":"GPT-5.3 Chat (latest)","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-03-03"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"text-embedding-3-large":{"name":"text-embedding-3-large","limit":{"context":8191,"output":3072},"cost":{"input":0.13,"output":0},"updated":"2024-01-25"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"text-embedding-3-small":{"name":"text-embedding-3-small","limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0},"updated":"2024-01-25"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"gpt-realtime-2.1":{"name":"GPT-Realtime-2.1","limit":{"context":128000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4},"updated":"2026-07-06"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"gpt-image-1-mini":{"name":"gpt-image-1-mini","limit":{"context":0,"output":0},"updated":"2025-09-26"},"gpt-5.2-chat-latest":{"name":"GPT-5.2 Chat","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"chatgpt-image-latest":{"name":"chatgpt-image-latest","limit":{"context":0,"output":0},"updated":"2025-12-16"},"gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0},"updated":"2023-11-06"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"updated":"2025-03-19"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"text-embedding-ada-002":{"name":"text-embedding-ada-002","limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0},"updated":"2022-12-15"},"gpt-daybreak-blue-latest":{"name":"Daybreak Blue","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-08-07"},"gpt-image-2":{"name":"gpt-image-2","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-04-21"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"gpt-5.3-codex-spark":{"name":"GPT-5.3 Codex Spark","limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"gpt-5.6":{"name":"GPT-5.6","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"gpt-image-1.5":{"name":"gpt-image-1.5","limit":{"context":0,"output":0},"updated":"2025-11-25"},"o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"gpt-4o-2024-05-13":{"name":"GPT-4o (2024-05-13)","limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"updated":"2024-05-13"},"gpt-4":{"name":"GPT-4","limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2025-06-10"},"gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"gpt-daybreak-red-latest":{"name":"Daybreak Red","limit":{"context":400000,"output":128000},"cost":{"input":12.5,"output":75,"cache_read":1.25,"cache_write":15.625},"updated":"2026-08-07"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"}}},"inceptron":{"name":"Inceptron","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.2":{"name":"GLM 5.2","limit":{"context":1048576,"output":1048576},"cost":{"input":0.71,"output":2.35,"cache_read":0.12,"cache_write":0},"updated":"2026-06-13"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.66,"output":3.4,"cache_read":0.18,"cache_write":0},"updated":"2026-06-12"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.53,"output":3.39,"cache_read":0.17,"cache_write":0},"updated":"2026-04-21"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.13,"output":0.28,"cache_read":0.03,"cache_write":0},"updated":"2026-07-31"}}},"meta":{"name":"Meta","npm":"@ai-sdk/openai","models":{"muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-05"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"}}},"kimi-code-plan-global":{"name":"Kimi For Coding (kimi.ai)","npm":"@ai-sdk/openai-compatible","models":{"k3-256k":{"name":"Kimi K3-256K","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-16"},"kimi-for-coding":{"name":"kimi-for-coding","limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-11"},"k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-16"},"kimi-for-coding-highspeed":{"name":"Kimi For Coding HighSpeed","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-12"}}},"kimi-code-plan-cn":{"name":"Kimi For Coding (kimi.com)","npm":"@ai-sdk/openai-compatible","models":{"k3-256k":{"name":"Kimi K3-256K","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-16"},"kimi-for-coding":{"name":"kimi-for-coding","limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-11"},"k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-16"},"kimi-for-coding-highspeed":{"name":"Kimi For Coding HighSpeed","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-12"}}},"tencent-token-plan":{"name":"Tencent Token Plan","npm":"@ai-sdk/openai-compatible","models":{"hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-06"}}},"aihubmix":{"name":"AIHubMix","npm":"@aihubmix/ai-sdk-provider","models":{"nemotron-3.5-lightning-free":{"name":"Nemotron 3.5 Lightning 30B A3B (free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"coding-xiaomi-mimo-v2.5":{"name":"Coding Xiaomi MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.08,"output":0.4,"cache_read":0.016},"updated":"2026-05-13"},"ling-3.0-flash-free":{"name":"Ling 3.0 Flash (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-23"},"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.1644,"output":0.9864},"updated":"2026-02-15"},"qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":240000,"output":64000},"cost":{"input":1.27,"output":7.61,"cache_read":0.1268,"cache_write":1.585},"updated":"2026-05-09"},"claude-sonnet-4-6-think":{"name":"Claude Sonnet 4.6 Thinking","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.11268,"output":0.39438,"cache_read":0.02817},"updated":"2026-08-26"},"doubao-seed-2-0-pro":{"name":"Doubao Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644},"updated":"2026-02-14"},"deep-deepseek-v4-flash":{"name":"DeepSeek V4 Flash (DeepSeek)","limit":{"context":1000000,"output":384000},"cost":{"input":0.154,"output":0.308,"cache_read":0.0308},"updated":"2026-04-24"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675},"updated":"2026-08-05"},"coding-minimax-m2.7":{"name":"Coding MiniMax M2.7","limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2},"updated":"2026-03-18"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"coding-xiaomi-mimo-v2.5-pro":{"name":"Coding Xiaomi MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.2,"output":0.6,"cache_read":0.04},"updated":"2026-05-13"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":991000,"output":64000},"cost":{"input":0.282,"output":1.128,"cache_read":0.0564,"cache_write":0.3525},"updated":"2026-06-02"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.142,"output":0.284,"cache_read":0.0284},"updated":"2026-07-31"},"hy3-preview":{"name":"Hy3 Preview","limit":{"context":256000,"output":128000},"cost":{"input":0.17,"output":0.566661,"cache_read":0.051},"updated":"2026-04-20"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.1126,"output":0.380025,"cache_read":0.014075,"cache_write":0.175937},"updated":"2026-08-26"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"doubao-seed-2-0-lite-260428":{"name":"Doubao Seed 2.0 Lite 260428","limit":{"context":256000,"output":128000},"cost":{"input":0.08,"output":0.51,"cache_read":0.01692},"updated":"2026-04-28"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675,"cache_read":0.165},"updated":"2026-09-02"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1},"updated":"2026-05-07"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817},"updated":"2026-08-14"},"qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.1126,"output":0.9008},"updated":"2026-02-23"},"alicloud-deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Alibaba Cloud)","limit":{"context":1000000,"output":384000},"cost":{"input":1.69,"output":3.38,"cache_read":0.13},"updated":"2026-04-24"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"updated":"2026-09-01"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"alicloud-glm-5.1":{"name":"GLM-5.1 (Alibaba Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":0.84,"output":3.38,"cache_read":0.169,"cache_write":1.05625},"updated":"2026-03-27"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.48,"output":0.96,"cache_read":0.00384},"updated":"2026-09-22"},"glm-5v-turbo":{"name":"GLM 5 Vision Turbo","limit":{"context":200000,"output":128000},"cost":{"input":0.7042,"output":3.09848,"cache_read":0.169008},"updated":"2026-05-09"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"coding-glm-5.1":{"name":"Coding GLM 5.1","limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.22,"cache_read":0.013},"updated":"2026-04-11"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"coding-glm-5.3-flash-free":{"name":"GLM-5.3-Flash (Coding, free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262000,"output":262000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.254,"output":1.524},"updated":"2026-04-17"},"xiaomi-mimo-v2.5-pro":{"name":"Xiaomi MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":1.1,"output":3.3,"cache_read":0.22},"updated":"2026-05-13"},"grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120},"updated":"2026-05-28"},"nemotron-3-super-120b-a12b-free":{"name":"Nemotron 3 Super 120B A12B (free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.845,"output":2.535,"cache_read":0.04225},"updated":"2026-08-28"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.155,"output":0.62,"cache_read":0.0031},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817},"updated":"2026-06-13"},"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":1000000},"cost":{"input":1.08,"output":3.0888,"cache_read":0.054},"updated":"2026-09-20"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.273974,"output":1.095896,"cache_read":0.0547948},"updated":"2025-12-22"},"deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.155,"output":0.62,"cache_read":0.0031},"updated":"2026-09-01"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.137,"output":0.411,"cache_read":0.0274},"updated":"2025-12-08"},"nemotron-3-ultra-550b-a55b-free":{"name":"Nemotron 3 Ultra 550B A55B (free)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.0846,"output":0.6768},"updated":"2026-02-23"},"claude-opus-4-8-think":{"name":"Claude Opus 4.8","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"qwen3.8-max-preview":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":131072},"cost":{"input":0.338,"output":1.014,"cache_read":0.0676,"cache_write":0.4225},"updated":"2026-07-19"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":3.9995,"cache_read":0.160835},"updated":"2026-06-12"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":7.999,"cache_read":0.32167},"updated":"2026-06-12"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-05"},"nemotron-3.5-content-safety-free":{"name":"Nemotron 3.5 Content Safety (free)","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"doubao-seed-2-0-mini-260428":{"name":"Doubao Seed 2.0 Mini 260428","limit":{"context":256000,"output":128000},"cost":{"input":0.03,"output":0.28,"cache_read":0.00564},"updated":"2026-04-28"},"claude-sonnet-4-5-think":{"name":"Claude Sonnet 4.5 Thinking","limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"claude-opus-4-7-think":{"name":"Claude Opus 4.7 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.499999,"cache_read":0.03},"updated":"2026-07-21"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":991000,"output":64000},"cost":{"input":0.17,"output":1.01,"cache_read":0.0169,"cache_write":0.21125},"updated":"2026-04-02"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-05-01"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.155,"output":0.31,"cache_read":0.0031},"updated":"2026-09-22"},"zai-glm-5.1":{"name":"GLM-5.1 (Z.ai)","limit":{"context":200000,"output":128000},"cost":{"input":0.845,"output":3.38,"cache_read":0.183112},"updated":"2026-03-27"},"gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gpt-image-2":{"name":"GPT-Image-2","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-04-21"},"muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675},"updated":"2026-07-09"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"coding-minimax-m2.7-highspeed":{"name":"Coding MiniMax M2.7 Highspeed","limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2},"updated":"2026-03-18"},"qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.0282,"output":0.282,"cache_read":0.00282,"cache_write":0.03525},"updated":"2026-02-23"},"qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":991000,"output":64000},"cost":{"input":0.0282,"output":0.1128,"cache_read":0.00564,"cache_write":0.03525},"updated":"2026-07-15"},"deep-deepseek-v4-pro":{"name":"DeepSeek V4 Pro (DeepSeek)","limit":{"context":1000000,"output":384000},"cost":{"input":0.478,"output":0.956,"cache_read":0.004302},"updated":"2026-04-24"},"gpt-image-2.5-flare":{"name":"GPT Image 2.5 Flare","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.22,"output":1.32,"cache_read":0.044},"updated":"2026-05-29"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.48,"output":0.96,"cache_read":0.00384},"updated":"2026-04-22"},"qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.1126,"output":0.380025,"cache_read":0.014075,"cache_write":0.175937},"updated":"2026-09-17"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"claude-opus-4-6-think":{"name":"Claude Opus 4.6 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"xiaomi-mimo-v2.5":{"name":"Xiaomi MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.088},"updated":"2026-05-13"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.273974,"output":1.095896,"cache_read":0.0547948},"updated":"2025-09-30"},"nemotron-3-nano-omni-30b-a3b-reasoning-free":{"name":"Nemotron 3 Nano Omni 30B A3B Reasoning (free)","limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-28"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.4508,"output":2.7048,"cache_read":0.09016,"cache_write":0.5635},"updated":"2025-09-23"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"glm-4.7-flash-free":{"name":"GLM-4.7-Flash (free)","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01-19"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":991000,"output":128000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125},"updated":"2026-08-03"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.155,"output":0.31,"cache_read":0.0031},"updated":"2026-04-22"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.1096,"output":0.6576,"cache_read":0.01096,"cache_write":0.137},"updated":"2026-02-16"},"xiaomi-mimo-v2.5-pro-free":{"name":"Xiaomi MiMo-V2.5-Pro (free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-05-13"},"gpt-image-1.5":{"name":"GPT-Image-1.5","limit":{"context":0,"output":0},"cost":{"input":5,"output":32},"updated":"2025-11-25"},"alicloud-deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Alibaba Cloud)","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"coding-glm-5.2-free":{"name":"GLM-5.2 (Coding, free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-27"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":991000,"output":64000},"cost":{"input":0.28,"output":1.69,"cache_read":0.0282,"cache_write":0.3525},"updated":"2026-05-09"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"longcat-2.0":{"name":"LongCat-2.0","limit":{"context":1000000,"output":131072},"cost":{"input":0.7746,"output":3.0984,"cache_read":0.015492},"updated":"2026-06-30"},"coding-glm-5.1-free":{"name":"Coding GLM 5.1 (free)","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-04-11"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-05"},"gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0.1562,"output":0.6248,"cache_read":0.03905},"updated":"2026-07-06"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0.6918,"output":2.0754,"cache_read":0.023058},"updated":"2026-08-22"},"qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.0564,"output":0.4512},"updated":"2026-02-23"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"deepseek-v4-flash-0731-fast":{"name":"DeepSeek V4 Flash 0731 Fast","limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":1.4,"cache_read":0.07},"updated":"2026-07-31"},"glm-4.5v":{"name":"GLM-4.5V","limit":{"context":64000,"output":16384},"cost":{"input":0.274,"output":1.096},"updated":"2025-08-11"},"gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-06-30"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"updated":"2026-09-21"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":1.5},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"coding-minimax-m2.7-free":{"name":"Coding MiniMax M2.7 (Free)","limit":{"context":204800,"output":128100},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"ox-alpha":{"name":"Ox Alpha","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.288,"output":1.152},"updated":"2026-06-01"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"mimo-v2.6-pro-ultraspeed":{"name":"MiMo-V2.6-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.8,"output":9.6,"cache_read":0.0384},"updated":"2026-09-21"},"claude-opus-4-5-think":{"name":"Claude Opus 4.5 Thinking","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":991000,"output":64000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125},"updated":"2026-05-21"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"coding-glm-5.3-free":{"name":"GLM-5.3 (Coding, free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-14"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"minimax-m2.7":{"name":"MiniMax M2.7","limit":{"context":204800,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"doubao-seed-2-0-code-preview":{"name":"Doubao Seed 2.0 Code Preview","limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644},"updated":"2026-02-14"},"qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":262144,"output":32768},"cost":{"input":0.137,"output":1.37,"cache_read":0},"updated":"2025-09-23"},"gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30,"cache_read":0.03},"updated":"2025-08-26"},"gpt-image-2.5-sunburst":{"name":"GPT Image 2.5 Sunburst","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"xiaomi-mimo-v2.5-free":{"name":"Xiaomi MiMo-V2.5 (free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-05-13"}}},"ambient":{"name":"Ambient","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":262144,"output":262144},"cost":{"input":0.23,"output":0.96,"cache_read":0.05,"cache_write":0},"updated":"2026-06-01"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":262144},"cost":{"input":0.19,"output":1.14,"cache_read":0.03,"cache_write":0},"updated":"2026-05-29"},"unsloth/qwen3.8-27b-gguf":{"name":"qwen3.8-27b-4q","limit":{"context":101072,"output":101072},"cost":{"input":0.001,"output":0.001,"cache_read":0,"cache_write":0},"updated":"2026-10-13"},"zai-org/GLM-5.2-FP8":{"name":"GLM-5.2","limit":{"context":202752,"output":202752},"cost":{"input":1.2,"output":4.2,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"zai-org/GLM-5.1-FP8":{"name":"GLM 5.1","limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0,"cache_write":0},"updated":"2026-04-07"},"ambient/small":{"name":"Ambient Small","limit":{"context":101072,"output":101072},"cost":{"input":0.001,"output":0.001,"cache_read":0,"cache_write":0},"updated":"2026-10-13"},"ambient/large":{"name":"Ambient Large","limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0},"updated":"2026-06-13"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.08,"output":0.18,"cache_read":0.016,"cache_write":0},"updated":"2026-07-31"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.028,"cache_write":0},"updated":"2026-04-24"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.69,"output":3.49,"cache_read":0.14,"cache_write":0},"updated":"2026-06-12"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.2,"cache_write":0},"updated":"2026-04-21"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08,"cache_write":0},"updated":"2026-04-22"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0},"updated":"2026-06-13"},"qwen/qwen3-30b-a3b-instruct-2507":{"name":"Qwen3 30B A3B Instruct 2507","limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.3,"cache_read":0.09,"cache_write":0},"updated":"2026-10-09"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":1,"cache_read":0.15,"cache_write":0},"updated":"2026-04-17"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":32768,"output":8192},"cost":{"input":0.32,"output":3.2,"cache_read":0.16,"cache_write":0},"updated":"2026-04-22"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":32768,"output":8192},"cost":{"input":0.32,"output":3.2,"cache_read":0.16,"cache_write":0},"updated":"2026-08-14"}}},"xpersona":{"name":"Xpersona","npm":"@ai-sdk/openai-compatible","models":{"xpersona-gpt-5.5":{"name":"GPT-5.5","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18,"cache_read":0.3,"reasoning":18},"updated":"2026-05-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18.5,"cache_read":0.3,"reasoning":18.5},"updated":"2026-06-09"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":272000,"output":128000},"cost":{"input":0.375,"output":4,"cache_read":0.0375,"reasoning":4},"updated":"2026-03-17"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":200000,"output":128000},"cost":{"input":1.5,"output":9.25,"cache_read":0.15,"reasoning":9.25},"updated":"2026-05-28"},"xpersona-frieren-coder":{"name":"Xpersona Frieren 1","limit":{"context":1000000,"output":384000},"cost":{"input":1.5,"output":6,"cache_read":0.15,"reasoning":6},"updated":"2026-05-25"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":1.5,"output":12,"cache_read":0.15,"reasoning":12},"updated":"2026-04-23"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":5.55,"cache_read":0.09,"reasoning":5.55},"updated":"2026-03-13"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"cache_read":0.15,"reasoning":12},"updated":"2026-07-09"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3.7,"cache_read":0.06,"reasoning":3.7},"updated":"2025-10-15"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":0.75,"output":6,"cache_read":0.075,"reasoning":6},"updated":"2026-03-05"},"gpt-5.6":{"name":"GPT-5.6","limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"cache_read":0.15,"reasoning":12},"updated":"2026-07-09"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":128000},"cost":{"input":1.55,"output":12.2,"cache_read":0.155,"reasoning":12.2},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":2,"cache_read":0.15,"reasoning":2},"updated":"2026-07-09"}}},"ollama-cloud":{"name":"Ollama Cloud","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"nemotron-3-super":{"name":"nemotron-3-super","limit":{"context":262144,"output":65536},"cost":{"input":0.015,"output":0.6,"cache_read":0.015},"updated":"2026-03-12"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"nemotron-3-nano:30b":{"name":"nemotron-3-nano:30b","limit":{"context":1048576,"output":131072},"cost":{"input":0.06,"output":0.24},"updated":"2026-01-19"},"muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"qwen3.5:397b":{"name":"qwen3.5:397b","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-17"},"deepseek-v4-flash:0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"updated":"2026-07-31"},"kimi-k2.5":{"name":"kimi-k2.5","limit":{"context":262144,"output":262144},"updated":"2026-01-27"},"deepseek-v4-pro":{"name":"deepseek-v4-pro","limit":{"context":1048576,"output":1048576},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-04-24"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":976000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"deepseek-v4-pro:0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":1048576},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-08-22"},"nemotron-3-ultra":{"name":"nemotron-3-ultra","limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":3,"cache_read":0.1},"updated":"2026-06-04"},"kimi-k2.7-code":{"name":"kimi-k2.7-code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"glm-5.1":{"name":"glm-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-04-07"},"gpt-oss:20b":{"name":"gpt-oss:20b","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3,"cache_read":0.035},"updated":"2026-01-19"},"gemma4:31b":{"name":"gemma4:31b","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.4,"cache_read":0.05},"updated":"2026-04-08"},"mistral-large-4":{"name":"Mistral Large 4","limit":{"context":1048576,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"updated":"2026-10-06"},"kimi-k2.6":{"name":"kimi-k2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-20"},"deepseek-v4.1-flash:1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"mistral-large-3:675b":{"name":"mistral-large-3:675b","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2026-01-19"},"gpt-oss:120b":{"name":"gpt-oss:120b","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.014},"updated":"2026-01-19"},"deepseek-v4-flash":{"name":"deepseek-v4-flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"updated":"2026-04-24"},"kimi-k3":{"name":"kimi-k3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-27"},"minimax-m2.5":{"name":"minimax-m2.5","limit":{"context":204800,"output":131072},"updated":"2026-02-12"},"minimax-m3":{"name":"minimax-m3","limit":{"context":512000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-05-31"},"minimax-m2.7":{"name":"minimax-m2.7","limit":{"context":196608,"output":196608},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"}}},"gmicloud":{"name":"GMI Cloud","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.2-FP8":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0.979,"output":3.08,"cache_read":0.182},"updated":"2026-06-13"},"zai-org/GLM-5-FP8":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":1.92,"cache_read":0.12},"updated":"2026-02-12"},"zai-org/GLM-5.1-FP8":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182},"updated":"2026-04-07"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"Qwen/Qwen3.8-Max":{"name":"Qwen3.8 Max","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"Qwen/Qwen3.7-Max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125},"updated":"2026-05-21"},"Qwen/Qwen3.8-Flash":{"name":"Qwen3.8 Flash","limit":{"context":1048575,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":65536,"output":65536},"cost":{"input":0.855,"output":3.6,"cache_read":0.144},"updated":"2026-04-21"},"moonshotai/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":409600,"output":128000},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":409600,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":409600,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-03-13"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-05-28"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":1.392,"output":2.784,"cache_read":0.116},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048575,"output":384000},"cost":{"input":0.112,"output":0.224,"cache_read":0.022},"updated":"2026-04-24"}}},"scnet-token-plan":{"name":"SCNet Token Plan","npm":"@ai-sdk/openai-compatible","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-02-12"},"GLM-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-07"},"Qwen3.8-Max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-03"},"Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-12"},"GLM-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-02-12"},"Kimi-K2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-01"},"Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-21"},"GLM-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-13"},"DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-31"},"DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-10"},"DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"Qwen3.8-Flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-26"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-01"},"DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-22"},"Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-16"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"GLM-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-14"},"GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-26"}}},"neon":{"name":"Neon","npm":"@ai-sdk/openai-compatible","models":{"gemini-3-8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-09-02"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"glm-5-2":{"name":"GLM-5.2","limit":{"context":1000000,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":131072,"output":10000},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"gemini-3-flash":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"glm-5-3-flash":{"name":"GLM-5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"gpt-5-4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"meta-llama-3-1-8b-instruct":{"name":"Llama 3.1 8B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.45},"updated":"2024-07-23"},"gpt-5-1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5-6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-5-4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5-5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"gemma-3-12b":{"name":"Gemma 3 12B","limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.5},"updated":"2025-03-13"},"llama-4-maverick":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":1000000,"output":8192},"cost":{"input":0.5,"output":1.5},"updated":"2025-04-05"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"gpt-5-3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"gemini-3-1-flash-lite":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-03-03"},"gpt-5-4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"qwen35-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":25000},"cost":{"input":0.22,"output":2.2},"updated":"2026-02-23"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":25000},"cost":{"input":0.07,"output":0.3},"updated":"2025-08-05"},"gpt-5-5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"gemini-3-5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5-6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"gpt-5-6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"meta-llama-3-3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.5,"output":1.5},"updated":"2024-12-06"},"gpt-5-2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"deepseek-v4-1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-09-10"},"gemini-3-6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"inkling":{"name":"Inkling","limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"grok-4-6":{"name":"Grok 4.6","limit":{"context":500000,"output":524288},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"claude-opus-4-1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gemini-3-5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":25000},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"gpt-6-1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"gemini-3-7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-08-13"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"glm-5-3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"gemini-3-1-pro":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"grok-4-7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"updated":"2026-09-21"}}},"volcengine-coding-plan":{"name":"Volcengine Ark Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-26"},"doubao-seed-evolving":{"name":"Seed Evolving","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-23"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-14"},"doubao-seed-2.1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-23"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-12"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-16"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-01"},"doubao-seed-2.0-lite":{"name":"Seed 2.0 Lite","limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-02-14"}}},"nan":{"name":"NaN","npm":"@ai-sdk/openai-compatible","models":{"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"glm5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-14"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-09-22"},"qwen-image-2.1":{"name":"Qwen-Image-2.1","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-09-21"},"glm5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"qwen3.6":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-17"},"deepseek-v4-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-09-10"},"gemma4":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"}}},"fireworks-ai":{"name":"Fireworks AI","npm":"@ai-sdk/openai-compatible","models":{"accounts/fireworks/models/ember-1":{"name":"Ember-1","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-22"},"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"updated":"2026-08-11"},"accounts/fireworks/models/glm-5p3":{"name":"GLM 5.3","limit":{"context":1048573,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-09-07"},"accounts/fireworks/models/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"accounts/fireworks/models/glm-5p3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048573,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-09-07"},"accounts/fireworks/models/nemotron-3-ultra-nvfp4":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":262144,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-04"},"accounts/fireworks/models/qwen3p8-2p4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"accounts/fireworks/models/qwen3p8-max":{"name":"Qwen3.8 Max","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-03"},"accounts/fireworks/models/inkling":{"name":"Inkling","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"accounts/fireworks/models/deepseek-v4p1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"accounts/fireworks/models/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-27"},"accounts/fireworks/models/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-06-16"},"accounts/fireworks/models/minimax-m3":{"name":"MiniMax-M3","limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-12"},"accounts/fireworks/models/deepseek-v4p1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"accounts/fireworks/routers/qwen-max-latest":{"name":"Qwen Max Latest (Qwen3.8 Max)","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-16"},"accounts/fireworks/routers/glm-latest":{"name":"GLM Latest","limit":{"context":1048573,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-09-15"},"accounts/fireworks/routers/glm-flash-latest":{"name":"GLM Flash Latest (GLM 5.3 Flash)","limit":{"context":1048573,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-09-15"},"accounts/fireworks/routers/deepseek-flash-latest":{"name":"DeepSeek Flash Latest","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"accounts/fireworks/routers/glm-fast-latest":{"name":"GLM 5.3 Fast (Latest)","limit":{"context":1048572,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.39},"updated":"2026-09-15"},"accounts/fireworks/routers/kimi-k3-fast":{"name":"Kimi K3 Fast","limit":{"context":1048576,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-07-27"},"accounts/fireworks/routers/glm-5p3-fast":{"name":"GLM 5.3 Fast","limit":{"context":1048572,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.39},"updated":"2026-09-07"},"accounts/fireworks/routers/kimi-fast-latest":{"name":"Kimi Fast Latest","limit":{"context":1048576,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-09-15"},"accounts/fireworks/routers/minimax-latest":{"name":"MiniMax Latest","limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-09-15"},"accounts/fireworks/routers/kimi-latest":{"name":"Kimi Latest","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-15"}}},"nova":{"name":"Nova","npm":"@ai-sdk/openai-compatible","models":{"nova-2-lite-v1":{"name":"Nova 2 Lite","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0},"updated":"2025-12-01"},"nova-2-pro-v1":{"name":"Nova 2 Pro","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0},"updated":"2026-01-03"}}},"moonshotai-cn":{"name":"Moonshot AI (China)","npm":"@ai-sdk/openai-compatible","models":{"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"updated":"2026-07-16"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code HighSpeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"}}},"impossibl":{"name":"Impossibl","npm":"@ai-sdk/openai-compatible","models":{"fireworks/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-06-13"},"fireworks/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3,"cache_read":0.035},"updated":"2025-08-05"},"fireworks/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2025-08-05"},"xai/grok-4.20-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-09-15"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3},"updated":"2026-04-23"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51,"cache_read":0.028},"updated":"2026-04-24"},"groq/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-08-05"},"groq/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2025-08-05"},"cerebras/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-05"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003},"updated":"2026-04-22"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"zai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"zai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"zai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"zai/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"updated":"2025-07-28"},"zai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"zai/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08},"updated":"2026-06-02"},"qwen/qwen3.8-max-preview":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5},"updated":"2026-07-19"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05},"updated":"2026-04-27"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"updated":"2026-05-21"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"updated":"2026-07-15"}}},"poe":{"name":"Poe","npm":"@ai-sdk/openai-compatible","models":{"xai/grok-4.1-fast-reasoning":{"name":"Grok-4.1-Fast-Reasoning","limit":{"context":2000000,"output":30000},"updated":"2025-11-19"},"xai/grok-3":{"name":"Grok 3","limit":{"context":131072,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2025-04-11"},"xai/grok-4-fast-reasoning":{"name":"Grok-4-Fast-Reasoning","limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-09-16"},"xai/grok-4.1-fast-non-reasoning":{"name":"Grok-4.1-Fast-Non-Reasoning","limit":{"context":2000000,"output":30000},"updated":"2025-11-19"},"xai/grok-3-mini":{"name":"Grok 3 Mini","limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":0.5,"cache_read":0.075},"updated":"2025-04-11"},"xai/grok-4-fast-non-reasoning":{"name":"Grok-4-Fast-Non-Reasoning","limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-09-16"},"xai/grok-4":{"name":"Grok-4","limit":{"context":256000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2025-07-10"},"xai/grok-4.20-multi-agent":{"name":"Grok-4.20-Multi-Agent","limit":{"context":128000,"output":0},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-13"},"xai/grok-code-fast-1":{"name":"Grok Code Fast 1","limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02},"updated":"2025-08-22"},"topazlabs-co/topazlabs":{"name":"TopazLabs","limit":{"context":204,"output":0},"updated":"2024-12-03"},"openai/gpt-image-1":{"name":"GPT-Image-1","limit":{"context":128000,"output":0},"updated":"2025-03-31"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":14,"output":54},"updated":"2024-12-18"},"openai/o3-deep-research":{"name":"o3-deep-research","limit":{"context":200000,"output":100000},"cost":{"input":9,"output":36,"cache_read":2.2},"updated":"2025-06-27"},"openai/gpt-4o-aug":{"name":"GPT-4o-Aug","limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9,"cache_read":1.1},"updated":"2024-11-21"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":8192},"updated":"2024-05-13"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-08-05"},"openai/gpt-4-turbo":{"name":"GPT-4-Turbo","limit":{"context":128000,"output":4096},"cost":{"input":9,"output":27},"updated":"2023-09-13"},"openai/gpt-5-chat":{"name":"GPT-5-Chat","limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4-Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.68,"output":4,"cache_read":0.068},"updated":"2026-03-12"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4,"cache_read":0.25},"updated":"2025-04-16"},"openai/sora-2":{"name":"Sora-2","limit":{"context":0,"output":0},"updated":"2025-10-06"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":400000,"output":128000},"cost":{"input":4.5455,"output":27.2727,"cache_read":0.4545},"updated":"2026-04-08"},"openai/gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9},"updated":"2025-09-23"},"openai/gpt-3.5-turbo-raw":{"name":"GPT-3.5-Turbo-Raw","limit":{"context":4524,"output":2048},"cost":{"input":0.45,"output":1.4},"updated":"2023-09-27"},"openai/gpt-4.1-mini":{"name":"GPT-4.1-mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.36,"output":1.4,"cache_read":0.09},"updated":"2025-04-15"},"openai/gpt-4.1-nano":{"name":"GPT-4.1-nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.09,"output":0.36,"cache_read":0.022},"updated":"2025-04-15"},"openai/gpt-5-nano":{"name":"GPT-5-nano","limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36,"cache_read":0.0045},"updated":"2025-08-05"},"openai/gpt-image-1-mini":{"name":"GPT-Image-1-Mini","limit":{"context":0,"output":0},"updated":"2025-08-26"},"openai/sora-2-pro":{"name":"Sora-2-Pro","limit":{"context":0,"output":0},"updated":"2025-10-06"},"openai/chatgpt-4o-latest":{"name":"ChatGPT-4o-Latest","limit":{"context":128000,"output":8192},"cost":{"input":4.5,"output":14},"updated":"2024-08-14"},"openai/gpt-4o-search":{"name":"GPT-4o-Search","limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9},"updated":"2025-03-11"},"openai/gpt-5.2-pro":{"name":"GPT-5.2-Pro","limit":{"context":400000,"output":128000},"cost":{"input":19,"output":150},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5-Pro","limit":{"context":400000,"output":128000},"cost":{"input":14,"output":110},"updated":"2025-10-06"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-Turbo","limit":{"context":16384,"output":2048},"cost":{"input":0.45,"output":1.4},"updated":"2023-09-13"},"openai/gpt-5.1-codex-max":{"name":"GPT-5.1-Codex-Max","limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-12-08"},"openai/gpt-5.2-instant":{"name":"GPT-5.2-Instant","limit":{"context":128000,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16},"updated":"2025-12-11"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":14,"cache_read":0.22},"updated":"2026-02-26"},"openai/gpt-5.5-pro":{"name":"GPT-5.5-Pro","limit":{"context":400000,"output":128000},"cost":{"input":27.2727,"output":163.6364},"updated":"2026-04-08"},"openai/o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":140,"output":540},"updated":"2025-03-19"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16},"updated":"2025-12-08"},"openai/gpt-4o-mini":{"name":"GPT-4o-mini","limit":{"context":124096,"output":4096},"cost":{"input":0.14,"output":0.54,"cache_read":0.068},"updated":"2024-07-18"},"openai/gpt-5.1-instant":{"name":"GPT-5.1-Instant","limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-11-12"},"openai/gpt-image-2":{"name":"GPT-Image-2","limit":{"context":0,"output":0},"cost":{"input":5.0505,"output":32.3232,"cache_read":1.2626},"updated":"2026-04-21"},"openai/gpt-5-mini":{"name":"GPT-5-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022},"updated":"2025-06-25"},"openai/gpt-4-classic":{"name":"GPT-4-Classic","limit":{"context":8192,"output":4096},"cost":{"input":27,"output":54},"updated":"2024-03-25"},"openai/gpt-5.3-codex-spark":{"name":"GPT-5.3-Codex-Spark","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-03-04"},"openai/gpt-5.3-codex":{"name":"GPT-5.3-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16},"updated":"2026-02-10"},"openai/gpt-4-classic-0314":{"name":"GPT-4-Classic-0314","limit":{"context":8192,"output":4096},"cost":{"input":27,"output":54},"updated":"2024-08-26"},"openai/gpt-image-1.5":{"name":"gpt-image-1.5","limit":{"context":128000,"output":0},"updated":"2025-12-16"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4},"updated":"2025-01-31"},"openai/o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":18,"output":72},"updated":"2025-06-10"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1-Codex-Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022},"updated":"2025-11-12"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-11-12"},"openai/gpt-4o-mini-search":{"name":"GPT-4o-mini-Search","limit":{"context":128000,"output":8192},"cost":{"input":0.14,"output":0.54},"updated":"2025-03-11"},"openai/gpt-5.1-codex":{"name":"GPT-5.1-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11},"updated":"2025-11-12"},"openai/gpt-5.4-nano":{"name":"GPT-5.4-Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.18,"output":1.1,"cache_read":0.018},"updated":"2026-03-11"},"openai/o4-mini-deep-research":{"name":"o4-mini-deep-research","limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45},"updated":"2025-06-27"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":1.8,"output":7.2,"cache_read":0.45},"updated":"2025-04-14"},"openai/o3-mini-high":{"name":"o3-mini-high","limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4},"updated":"2025-01-31"},"openai/gpt-5.4-pro":{"name":"GPT-5.4-Pro","limit":{"context":1050000,"output":128000},"cost":{"input":27,"output":160},"updated":"2026-03-05"},"openai/dall-e-3":{"name":"DALL-E-3","limit":{"context":800,"output":0},"updated":"2023-11-06"},"openai/gpt-5.2-codex":{"name":"GPT-5.2-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16},"updated":"2026-01-14"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45},"updated":"2025-04-16"},"openai/gpt-5.3-instant":{"name":"GPT-5.3-Instant","limit":{"context":128000,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16},"updated":"2026-03-03"},"openai/gpt-3.5-turbo-instruct":{"name":"GPT-3.5-Turbo-Instruct","limit":{"context":3500,"output":1024},"cost":{"input":1.4,"output":1.8},"updated":"2023-09-20"},"fireworks-ai/kimi-k2.5-fw":{"name":"Kimi-K2.5-FW","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-01-27"},"ideogramai/ideogram-v2a":{"name":"Ideogram-v2a","limit":{"context":150,"output":0},"updated":"2025-02-27"},"ideogramai/ideogram-v2a-turbo":{"name":"Ideogram-v2a-Turbo","limit":{"context":150,"output":0},"updated":"2025-02-27"},"ideogramai/ideogram-v2":{"name":"Ideogram-v2","limit":{"context":150,"output":0},"updated":"2024-08-21"},"ideogramai/ideogram":{"name":"Ideogram","limit":{"context":150,"output":0},"updated":"2024-04-03"},"poetools/claude-code":{"name":"claude-code","limit":{"context":0,"output":0},"updated":"2025-11-27"},"empiriolabs/deepseek-v4-pro-el":{"name":"DeepSeek-V4-Pro-EL","limit":{"context":1000000,"output":384000},"cost":{"input":1.67,"output":3.33},"updated":"2026-05-02"},"empiriolabs/deepseek-v4-flash-el":{"name":"DeepSeek-V4-Flash-EL","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28},"updated":"2026-05-02"},"trytako/tako":{"name":"Tako","limit":{"context":2048,"output":0},"updated":"2024-08-15"},"novita/kimi-k2-thinking":{"name":"kimi-k2-thinking","limit":{"context":256000,"output":0},"updated":"2025-11-07"},"novita/kimi-k2.5":{"name":"Kimi-K2.5","limit":{"context":128000,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01-27"},"novita/glm-4.7":{"name":"glm-4.7","limit":{"context":205000,"output":131072},"updated":"2025-12-22"},"novita/glm-4.7-n":{"name":"glm-4.7-n","limit":{"context":205000,"output":131072},"updated":"2025-12-22"},"novita/glm-4.6v":{"name":"glm-4.6v","limit":{"context":131000,"output":32768},"updated":"2025-12-09"},"novita/deepseek-v3.2":{"name":"DeepSeek-V3.2","limit":{"context":128000,"output":0},"cost":{"input":0.27,"output":0.4,"cache_read":0.13},"updated":"2025-12-01"},"novita/kimi-k2.6":{"name":"Kimi-K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.96,"output":4.04,"cache_read":0.16},"updated":"2026-05-02"},"novita/minimax-m2.1":{"name":"minimax-m2.1","limit":{"context":205000,"output":131072},"updated":"2025-12-26"},"novita/glm-4.6":{"name":"GLM-4.6","limit":{"context":0,"output":0},"updated":"2025-09-30"},"novita/glm-5":{"name":"GLM-5","limit":{"context":205000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-15"},"novita/glm-4.7-flash":{"name":"glm-4.7-flash","limit":{"context":200000,"output":65500},"updated":"2026-01-19"},"cerebras/gpt-oss-120b-cs":{"name":"GPT-OSS-120B-CS","limit":{"context":128000,"output":0},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-06"},"cerebras/llama-3.1-8b-cs":{"name":"Llama-3.1-8B-CS","limit":{"context":128000,"output":0},"cost":{"input":0.1,"output":0.1},"updated":"2025-05-13"},"cerebras/qwen3-32b-cs":{"name":"qwen3-32b-cs","limit":{"context":0,"output":0},"updated":"2025-05-15"},"cerebras/llama-3.3-70b-cs":{"name":"llama-3.3-70b-cs","limit":{"context":0,"output":0},"updated":"2025-05-13"},"cerebras/qwen3-235b-2507-cs":{"name":"qwen3-235b-2507-cs","limit":{"context":0,"output":0},"updated":"2025-08-06"},"runwayml/runway-gen-4-turbo":{"name":"Runway-Gen-4-Turbo","limit":{"context":256,"output":0},"updated":"2025-05-09"},"runwayml/runway":{"name":"Runway","limit":{"context":256,"output":0},"updated":"2024-10-11"},"anthropic/claude-sonnet-4.5":{"name":"Claude-Sonnet-4.5","limit":{"context":983040,"output":32768},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2025-09-26"},"anthropic/claude-opus-4.1":{"name":"Claude-Opus-4.1","limit":{"context":196608,"output":32000},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16},"updated":"2025-08-05"},"anthropic/claude-sonnet-4":{"name":"Claude-Sonnet-4","limit":{"context":983040,"output":64000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2025-05-21"},"anthropic/claude-opus-4.5":{"name":"Claude-Opus-4.5","limit":{"context":196608,"output":64000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3},"updated":"2025-11-21"},"anthropic/claude-opus-4.7":{"name":"Claude-Opus-4.7","limit":{"context":1048576,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.4},"updated":"2026-04-15"},"anthropic/claude-opus-4.6":{"name":"Claude-Opus-4.6","limit":{"context":983040,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3},"updated":"2026-02-04"},"anthropic/claude-opus-4":{"name":"Claude-Opus-4","limit":{"context":192512,"output":28672},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16},"updated":"2025-05-21"},"anthropic/claude-sonnet-4.6":{"name":"Claude-Sonnet-4.6","limit":{"context":983040,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2026-02-05"},"anthropic/claude-sonnet-3.7":{"name":"Claude-Sonnet-3.7","limit":{"context":196608,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2025-02-19"},"anthropic/claude-haiku-3":{"name":"Claude-Haiku-3","limit":{"context":189096,"output":8192},"cost":{"input":0.21,"output":1.1,"cache_read":0.021,"cache_write":0.26},"updated":"2024-03-09"},"anthropic/claude-haiku-4.5":{"name":"Claude-Haiku-4.5","limit":{"context":192000,"output":64000},"cost":{"input":0.85,"output":4.3,"cache_read":0.085,"cache_write":1.1},"updated":"2025-10-15"},"anthropic/claude-sonnet-3.5":{"name":"Claude-Sonnet-3.5","limit":{"context":189096,"output":8192},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2024-06-05"},"anthropic/claude-sonnet-3.5-june":{"name":"Claude-Sonnet-3.5-June","limit":{"context":189096,"output":8192},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2},"updated":"2024-11-18"},"anthropic/claude-haiku-3.5":{"name":"Claude-Haiku-3.5","limit":{"context":189096,"output":8192},"cost":{"input":0.68,"output":3.4,"cache_read":0.068,"cache_write":0.85},"updated":"2024-10-01"},"anthropic/claude-opus-4.8":{"name":"Claude-Opus-4.8","limit":{"context":1048576,"output":128000},"cost":{"input":4.2929,"output":21.4646},"updated":"2026-05-28"},"elevenlabs/elevenlabs-v2.5-turbo":{"name":"ElevenLabs-v2.5-Turbo","limit":{"context":128000,"output":0},"updated":"2024-10-28"},"elevenlabs/elevenlabs-music":{"name":"ElevenLabs-Music","limit":{"context":2000,"output":0},"updated":"2025-08-29"},"elevenlabs/elevenlabs-v3":{"name":"ElevenLabs-v3","limit":{"context":128000,"output":0},"updated":"2025-06-05"},"stabilityai/stablediffusionxl":{"name":"StableDiffusionXL","limit":{"context":200,"output":0},"updated":"2023-07-09"},"google/veo-3.1-fast":{"name":"Veo-3.1-Fast","limit":{"context":480,"output":0},"updated":"2025-10-15"},"google/gemini-3.1-flash-lite":{"name":"Gemini-3.1-Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.2525,"output":1.5152},"updated":"2026-05-07"},"google/gemini-3-flash":{"name":"Gemini-3-Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.404,"output":2.4242,"cache_read":0.0404},"updated":"2025-12-17"},"google/veo-3-fast":{"name":"Veo-3-Fast","limit":{"context":480,"output":0},"updated":"2025-10-13"},"google/imagen-4-fast":{"name":"Imagen-4-Fast","limit":{"context":480,"output":0},"updated":"2025-06-25"},"google/imagen-3-fast":{"name":"Imagen-3-Fast","limit":{"context":480,"output":0},"updated":"2024-10-17"},"google/nano-banana-pro":{"name":"Nano-Banana-Pro","limit":{"context":65536,"output":0},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-19"},"google/gemini-3-pro":{"name":"Gemini-3-Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.6,"output":9.6,"cache_read":0.16},"updated":"2025-10-22"},"google/imagen-4-ultra":{"name":"Imagen-4-Ultra","limit":{"context":480,"output":0},"updated":"2025-05-24"},"google/imagen-4":{"name":"Imagen-4","limit":{"context":480,"output":0},"updated":"2025-05-22"},"google/nano-banana":{"name":"Nano-Banana","limit":{"context":65536,"output":0},"cost":{"input":0.21,"output":1.8,"cache_read":0.021},"updated":"2025-08-21"},"google/gemini-2.5-flash-lite":{"name":"Gemini-2.5-Flash-Lite","limit":{"context":1024000,"output":64000},"cost":{"input":0.07,"output":0.28},"updated":"2025-06-19"},"google/veo-3.1":{"name":"Veo-3.1","limit":{"context":480,"output":0},"updated":"2025-10-15"},"google/veo-3":{"name":"Veo-3","limit":{"context":480,"output":0},"updated":"2025-05-21"},"google/gemini-2.5-flash":{"name":"Gemini-2.5-Flash","limit":{"context":1065535,"output":65535},"cost":{"input":0.21,"output":1.8,"cache_read":0.021},"updated":"2025-04-26"},"google/gemini-3.5-flash-lite":{"name":"Gemini-3.5-Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.303,"output":2.5253,"cache_read":0.0303},"updated":"2026-07-21"},"google/gemini-3.7-flash":{"name":"Gemini-3.7-Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.7576,"output":3.7879,"cache_read":0.0758},"updated":"2026-08-13"},"google/gemini-deep-research":{"name":"gemini-deep-research","limit":{"context":1048576,"output":0},"cost":{"input":1.6,"output":9.6},"updated":"2025-12-11"},"google/imagen-3":{"name":"Imagen-3","limit":{"context":480,"output":0},"updated":"2024-10-15"},"google/gemini-3.6-flash":{"name":"Gemini-3.6-Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.7576,"output":3.7879,"cache_read":0.0758},"updated":"2026-07-21"},"google/gemini-2.0-flash-lite":{"name":"Gemini-2.0-Flash-Lite","limit":{"context":990000,"output":8192},"cost":{"input":0.052,"output":0.21},"updated":"2025-02-05"},"google/gemini-3.8-flash":{"name":"Gemini-3.8-Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.7576,"output":3.7879,"cache_read":0.0758},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini-2.5-Pro","limit":{"context":1065535,"output":65535},"cost":{"input":0.87,"output":7,"cache_read":0.087},"updated":"2025-02-05"},"google/gemini-omni-1.1-flash":{"name":"Gemini-Omni-1.1-Flash","limit":{"context":131072,"output":57920},"cost":{"input":1.5152,"output":9.0909},"updated":"2026-08-27"},"google/lyria":{"name":"Lyria","limit":{"context":0,"output":0},"updated":"2025-06-04"},"google/gemini-3.1-pro":{"name":"Gemini-3.1-Pro","limit":{"context":1048576,"output":65536},"cost":{"input":2.0202,"output":12.1212,"cache_read":0.202},"updated":"2026-02-19"},"google/gemini-3.5-flash":{"name":"Gemini-3.5-Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5152,"output":9.0909,"cache_read":0.1515},"updated":"2026-05-19"},"google/gemma-4-31b":{"name":"Gemma-4-31B","limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"google/veo-2":{"name":"Veo-2","limit":{"context":480,"output":0},"updated":"2024-12-02"},"google/gemini-2.0-flash":{"name":"Gemini-2.0-Flash","limit":{"context":990000,"output":8192},"cost":{"input":0.1,"output":0.42},"updated":"2024-12-11"},"lumalabs/ray2":{"name":"Ray2","limit":{"context":5000,"output":0},"updated":"2025-02-20"}}},"cloudflare-workers-ai":{"name":"Cloudflare Workers AI","npm":"@ai-sdk/openai-compatible","models":{"@cf/zai-org/glm-5.3-flash":{"name":"Glm 5.3 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"@cf/zai-org/glm-5.3":{"name":"Glm 5.3","limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"@cf/zai-org/glm-5.2":{"name":"Glm 5.2","limit":{"context":262144,"output":256000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"@cf/zai-org/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4},"updated":"2026-01-19"},"@cf/openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.3},"updated":"2025-08-05"},"@cf/openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-05"},"@cf/meta/llama-3.3-70b-instruct-fp8-fast":{"name":"Llama 3.3 70B Instruct fp8 Fast","limit":{"context":24000,"output":24000},"cost":{"input":0.293,"output":2.253},"updated":"2024-12-06"},"@cf/meta/llama-4-scout-17b-16e-instruct":{"name":"Llama 4 Scout 17B 16E Instruct","limit":{"context":131000,"output":16384},"cost":{"input":0.27,"output":0.85},"updated":"2025-04-05"},"@cf/meta/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":60000,"output":60000},"cost":{"input":0.027,"output":0.201},"updated":"2024-09-25"},"@cf/meta/llama-guard-3-8b":{"name":"Llama Guard 3 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.484,"output":0.03},"updated":"2024-07-23"},"@cf/meta/llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":80000,"output":80000},"cost":{"input":0.0509,"output":0.335},"updated":"2024-09-25"},"@cf/meta/llama-3.2-11b-vision-instruct":{"name":"Llama 3.2 11B Vision Instruct","limit":{"context":128000,"output":128000},"cost":{"input":0.0485,"output":0.676},"updated":"2024-09-25"},"@cf/meta/llama-3.1-8b-instruct-fp8":{"name":"Llama 3.1 8B Instruct fp8","limit":{"context":32000,"output":32000},"cost":{"input":0.152,"output":0.287},"updated":"2024-07-23"},"@cf/nvidia/nemotron-3-120b-a12b":{"name":"Nemotron 3 Super 120B","limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5},"updated":"2026-03-11"},"@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"name":"Gemma Sea Lion V4 27B It","limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"updated":"2025-09-23"},"@cf/moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"@cf/moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"@cf/google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":256000,"output":16384},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"@cf/ibm-granite/granite-4.0-h-micro":{"name":"Granite 4.0 H Micro","limit":{"context":131000,"output":131000},"cost":{"input":0.017,"output":0.112},"updated":"2025-10-02"},"@cf/qwen/qwen2.5-coder-32b-instruct":{"name":"Qwen2.5 Coder 32B Instruct","limit":{"context":32768,"output":32768},"cost":{"input":0.66,"output":1},"updated":"2024-11-12"},"@cf/qwen/qwen3-30b-a3b-fp8":{"name":"Qwen3 30B A3b fp8","limit":{"context":32768,"output":32768},"cost":{"input":0.0509,"output":0.335},"updated":"2025-04-28"},"@cf/qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":3.2,"cache_read":0.05},"updated":"2026-08-14"},"@cf/qwen/qwq-32b":{"name":"Qwq 32B","limit":{"context":24000,"output":24000},"cost":{"input":0.66,"output":1},"updated":"2025-03-05"},"@cf/mistralai/mistral-small-3.1-24b-instruct":{"name":"Mistral Small 3.1 24B Instruct","limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"updated":"2025-03-17"},"@cf/deepseek-ai/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-07-31"},"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{"name":"Deepseek R1 Distill Qwen 32B","limit":{"context":80000,"output":80000},"cost":{"input":0.497,"output":4.881},"updated":"2025-05-29"},"@cf/deepseek-ai/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"}}},"zeldoc":{"name":"Zeldoc","npm":"@ai-sdk/openai-compatible","models":{"zdev":{"name":"ZDev","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"}}},"the-grid-ai":{"name":"The Grid AI","npm":"@ai-sdk/openai-compatible","models":{"glm-latest":{"name":"GLM Latest","limit":{"context":1000000,"output":128000},"updated":"2026-07-06"},"agent-standard":{"name":"Agent Standard","limit":{"context":128000,"output":65536},"updated":"2026-07-15"},"bytedance-pro-latest":{"name":"ByteDance Pro Latest","limit":{"context":262144,"output":131072},"updated":"2026-07-06"},"gpt-sol-latest":{"name":"GPT Sol Latest","limit":{"context":1000000,"output":128000},"updated":"2026-07-06"},"agent-max":{"name":"Agent Max","limit":{"context":1000000,"output":128000},"updated":"2026-07-24"},"agent-prime":{"name":"Agent Prime","limit":{"context":196608,"output":131072},"updated":"2026-07-15"},"text-standard":{"name":"Text Standard","limit":{"context":128000,"output":65536},"updated":"2026-07-15"},"code-max":{"name":"Code Max","limit":{"context":1000000,"output":128000},"updated":"2026-07-24"},"text-max":{"name":"Text Max","limit":{"context":1000000,"output":128000},"updated":"2026-07-24"},"text-prime":{"name":"Text Prime","limit":{"context":196608,"output":131072},"updated":"2026-07-15"},"claude-opus-latest":{"name":"Claude Opus Latest","limit":{"context":1000000,"output":128000},"updated":"2026-07-30"},"code-standard":{"name":"Code Standard","limit":{"context":128000,"output":65536},"updated":"2026-07-15"},"minimax-latest":{"name":"MiniMax Latest","limit":{"context":1000000,"output":512000},"updated":"2026-07-06"},"deepseek-pro-latest":{"name":"DeepSeek Pro Latest","limit":{"context":1000000,"output":384000},"updated":"2026-07-06"},"code-prime":{"name":"Code Prime","limit":{"context":196608,"output":131072},"updated":"2026-07-15"},"gemini-pro-latest":{"name":"Gemini Pro Latest","limit":{"context":1000000,"output":65536},"updated":"2026-07-06"}}},"zenifra":{"name":"Zenifra","npm":"@ai-sdk/openai-compatible","models":{"alibaba/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.19,"output":0.48},"updated":"2026-04-17"}}},"alibaba-cn":{"name":"Alibaba (China)","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032,"reasoning":1.032},"updated":"2026-02-16"},"qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":245800,"output":65536},"cost":{"input":1.32,"output":7.9,"cache_read":0.132},"updated":"2026-04-21"},"qwen3-8b":{"name":"Qwen3 8B","limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.287,"reasoning":0.717},"updated":"2025-04"},"deepseek-r1-distill-qwen-14b":{"name":"DeepSeek R1 Distill Qwen 14B","limit":{"context":32768,"output":16384},"cost":{"input":0.144,"output":0.431},"updated":"2025-01-01"},"qwen2-5-vl-7b-instruct":{"name":"Qwen2.5-VL 7B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.717},"updated":"2024-09"},"deepseek-r1-distill-qwen-1-5b":{"name":"DeepSeek R1 Distill Qwen 1.5B","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-02-12"},"qwen-mt-plus":{"name":"Qwen-MT Plus","limit":{"context":16384,"output":8192},"cost":{"input":0.259,"output":0.775},"updated":"2025-01"},"qwen-deep-research":{"name":"Qwen Deep Research","limit":{"context":1000000,"output":32768},"cost":{"input":7.742,"output":23.367},"updated":"2024-01"},"qwen3-coder-480b-a35b-instruct":{"name":"Qwen3-Coder 480B-A35B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.861,"output":3.441},"updated":"2025-04"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-06-02"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.11875,"output":0.40073,"cache_read":0.01187,"cache_write":0.14844},"updated":"2026-08-26"},"qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.115,"output":0.287,"cache_read":0.012,"cache_write":0.144,"reasoning":1.147},"updated":"2025-09-11"},"qwen2-5-coder-7b-instruct":{"name":"Qwen2.5-Coder 7B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.287},"updated":"2024-11"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.1,"output":3.851,"cache_read":0.275,"cache_write":0},"updated":"2026-08-14"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":0.574},"updated":"2025-09"},"deepseek-r1-0528":{"name":"DeepSeek R1 0528","limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294},"updated":"2025-05-28"},"qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":1.434},"updated":"2025-09"},"qwen-vl-plus":{"name":"Qwen-VL Plus","limit":{"context":131072,"output":8192},"cost":{"input":0.115,"output":0.287},"updated":"2025-08-15"},"deepseek-r1-distill-qwen-32b":{"name":"DeepSeek R1 Distill Qwen 32B","limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861},"updated":"2025-01-01"},"qwen2-5-vl-72b-instruct":{"name":"Qwen2.5-VL 72B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":2.294,"output":6.881},"updated":"2024-09"},"qwen3-vl-235b-a22b":{"name":"Qwen3-VL 235B-A22B","limit":{"context":131072,"output":32768},"cost":{"input":0.286705,"output":1.14682,"reasoning":2.867051},"updated":"2025-04"},"qwen-plus-character":{"name":"Qwen Plus Character","limit":{"context":32768,"output":4096},"cost":{"input":0.115,"output":0.287},"updated":"2024-01"},"qwen2-5-32b-instruct":{"name":"Qwen2.5 32B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861},"updated":"2024-09"},"kimi-k2-thinking":{"name":"Moonshot Kimi K2 Thinking","limit":{"context":262144,"output":16384},"cost":{"input":0.574,"output":2.294},"updated":"2025-11-06"},"qwen3-235b-a22b":{"name":"Qwen3 235B-A22B","limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868},"updated":"2025-04"},"qwen-omni-turbo":{"name":"Qwen-Omni Turbo","limit":{"context":32768,"output":2048},"cost":{"input":0.058,"output":0.23},"updated":"2025-03-26"},"kimi-k2.5":{"name":"Moonshot Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0.574,"output":2.411},"updated":"2026-01-27"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"qwq-plus":{"name":"QwQ Plus","limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574},"updated":"2025-03-05"},"qwen2-5-math-7b-instruct":{"name":"Qwen2.5-Math 7B Instruct","limit":{"context":4096,"output":3072},"cost":{"input":0.144,"output":0.287},"updated":"2024-09"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.29754,"output":1.19015,"cache_read":0.01488},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":1.1,"output":3.851,"cache_read":0.275,"cache_write":0},"updated":"2026-06-13"},"qwen2-5-14b-instruct":{"name":"Qwen2.5 14B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.431},"updated":"2024-09"},"qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.216},"updated":"2025-07-28"},"qwen-long":{"name":"Qwen Long","limit":{"context":10000000,"output":8192},"cost":{"input":0.072,"output":0.287},"updated":"2025-01-25"},"qwen-math-plus":{"name":"Qwen Math Plus","limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721},"updated":"2024-09-19"},"qwen2-5-math-72b-instruct":{"name":"Qwen2.5-Math 72B Instruct","limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721},"updated":"2024-09"},"qwen3-omni-flash-realtime":{"name":"Qwen3-Omni Flash Realtime","limit":{"context":65536,"output":16384},"cost":{"input":0.23,"output":0.918},"updated":"2025-09-15"},"deepseek-v3-2-exp":{"name":"DeepSeek V3.2 Exp","limit":{"context":131072,"output":65536},"cost":{"input":0.287,"output":0.431},"updated":"2025-01-01"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868},"updated":"2025-04"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.17},"updated":"2026-04-14"},"deepseek-r1":{"name":"DeepSeek R1","limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294},"updated":"2025-01-01"},"qwen-vl-max":{"name":"Qwen-VL Max","limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574},"updated":"2025-08-13"},"qwen2-5-7b-instruct":{"name":"Qwen2.5 7B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.144},"updated":"2024-09"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"updated":"2026-04-27"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.216,"output":0.861},"updated":"2025-04"},"qwen-math-turbo":{"name":"Qwen Math Turbo","limit":{"context":4096,"output":3072},"cost":{"input":0.287,"output":0.861},"updated":"2024-09-19"},"qwen-omni-turbo-realtime":{"name":"Qwen-Omni Turbo Realtime","limit":{"context":32768,"output":2048},"cost":{"input":0.23,"output":0.918},"updated":"2025-05-08"},"kimi-k2.6":{"name":"Moonshot Kimi K2.6","limit":{"context":262144,"output":16384},"cost":{"input":0.929,"output":3.858},"updated":"2026-04-21"},"qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.029,"output":0.287,"reasoning":0.287},"updated":"2026-09-22"},"qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.02962,"output":0.1185,"cache_read":0.002962,"cache_write":0.03703},"updated":"2026-07-15"},"qwen-vl-ocr":{"name":"Qwen-VL OCR","limit":{"context":34096,"output":4096},"cost":{"input":0.043,"output":0.072},"updated":"2026-09-11"},"qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.113,"output":0.382,"cache_read":0.014},"updated":"2026-09-17"},"qwen-turbo":{"name":"Qwen Turbo","limit":{"context":1000000,"output":16384},"cost":{"input":0.044,"output":0.087,"reasoning":0.431},"updated":"2025-07-15"},"deepseek-r1-distill-qwen-7b":{"name":"DeepSeek R1 Distill Qwen 7B","limit":{"context":32768,"output":16384},"cost":{"input":0.072,"output":0.144},"updated":"2025-01-01"},"deepseek-v3":{"name":"DeepSeek V3","limit":{"context":65536,"output":8192},"cost":{"input":0.287,"output":1.147},"updated":"2024-12-01"},"qwen3-omni-flash":{"name":"Qwen3-Omni Flash","limit":{"context":65536,"output":16384},"cost":{"input":0.058,"output":0.23},"updated":"2025-09-15"},"qvq-max":{"name":"QVQ Max","limit":{"context":131072,"output":8192},"cost":{"input":1.147,"output":4.588},"updated":"2025-03-25"},"qwen3-asr-flash":{"name":"Qwen3-ASR Flash","limit":{"context":53248,"output":4096},"cost":{"input":0.032,"output":0.032},"updated":"2025-09-08"},"deepseek-r1-distill-llama-8b":{"name":"DeepSeek R1 Distill Llama 8B","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434,"reasoning":1.434},"updated":"2026-09-22"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.77744,"output":5.33231,"cache_read":0.22218,"cache_write":2.22179},"updated":"2026-08-03"},"qwen3-14b":{"name":"Qwen3 14B","limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.574,"reasoning":1.434},"updated":"2025-04"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.115,"output":0.688,"reasoning":0.688},"updated":"2026-09-22"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":2.827,"output":14.133,"cache_read":0.283},"updated":"2026-07-16"},"qwen-max":{"name":"Qwen Max","limit":{"context":131072,"output":8192},"cost":{"input":0.345,"output":1.377},"updated":"2025-01-25"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"qwen2-5-72b-instruct":{"name":"Qwen2.5 72B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":1.721},"updated":"2024-09"},"qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.144,"output":0.574},"updated":"2025-07-28"},"qwen-mt-turbo":{"name":"Qwen-MT Turbo","limit":{"context":16384,"output":8192},"cost":{"input":0.101,"output":0.28},"updated":"2025-01"},"qwen3-vl-30b-a3b":{"name":"Qwen3-VL 30B-A3B","limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":0.431,"reasoning":1.076},"updated":"2025-04"},"qwen-doc-turbo":{"name":"Qwen Doc Turbo","limit":{"context":131072,"output":8192},"cost":{"input":0.087,"output":0.144},"updated":"2024-01"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58},"updated":"2026-02-11"},"deepseek-r1-distill-llama-70b":{"name":"DeepSeek R1 Distill Llama 70B","limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861},"updated":"2025-01-01"},"qwen2-5-coder-32b-instruct":{"name":"Qwen2.5-Coder 32B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861},"updated":"2024-11"},"qwq-32b":{"name":"QwQ 32B","limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861},"updated":"2024-12"},"deepseek-v3-1":{"name":"DeepSeek V3.1","limit":{"context":131072,"output":65536},"cost":{"input":0.574,"output":1.721},"updated":"2025-01-01"},"qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1048576,"output":65536},"cost":{"input":0.574,"output":2.296},"updated":"2026-09-11"},"qwen2-5-omni-7b":{"name":"Qwen2.5-Omni 7B","limit":{"context":32768,"output":2048},"cost":{"input":0.087,"output":0.345},"updated":"2024-12"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":262144,"output":32768},"cost":{"input":0.143353,"output":1.433525,"reasoning":4.300576},"updated":"2025-09-23"},"tongyi-intent-detect-v3":{"name":"Tongyi Intent Detect V3","limit":{"context":8192,"output":1024},"cost":{"input":0.058,"output":0.144},"updated":"2024-01"},"moonshot-kimi-k2-instruct":{"name":"Moonshot Kimi K2 Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":2.294},"updated":"2025-01-01"},"MiniMax/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"kimi/kimi-k2.5":{"name":"kimi/kimi-k2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01-27"},"siliconflow/deepseek-v3-0324":{"name":"siliconflow/deepseek-v3-0324","limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"},"siliconflow/deepseek-r1-0528":{"name":"siliconflow/deepseek-r1-0528","limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.18},"updated":"2025-11-25"},"siliconflow/deepseek-v3.2":{"name":"siliconflow/deepseek-v3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.42},"updated":"2025-12-03"},"siliconflow/deepseek-v3.1-terminus":{"name":"siliconflow/deepseek-v3.1-terminus","limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":1},"updated":"2025-11-25"}}},"coralbricks":{"name":"CoralBricks","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4.1-flash-fast":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.01,"output":1.2,"cache_read":0,"cache_write":0.09},"updated":"2026-09-10"}}},"deepseek":{"name":"DeepSeek","npm":"@ai-sdk/openai-compatible","models":{"deepseek-flash":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003,"reasoning":0.6},"updated":"2026-10-17"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":393216},"cost":{"input":0.66,"output":1.98,"cache_read":0.022,"reasoning":1.98},"updated":"2026-08-22"},"deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003,"reasoning":0.6},"updated":"2026-10-17"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003,"reasoning":0.6},"updated":"2026-10-17"}}},"empiriolabs":{"name":"EmpirioLabs AI","npm":"@ai-sdk/openai-compatible","models":{"qwen3-5-4b":{"name":"Qwen3.5 4B","limit":{"context":262144,"output":32768},"cost":{"input":0.04,"output":0.07,"cache_read":0.02},"updated":"2026-03-02"},"mistral-small-4":{"name":"Mistral Small 4","limit":{"context":256000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.15},"updated":"2026-03-16"},"qwen3-5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":256000,"output":64000},"cost":{"input":0.057,"output":0.459,"cache_read":0.057},"updated":"2026-02-23"},"seed-2-0-pro":{"name":"Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.63,"output":3.79,"cache_read":0.63},"updated":"2026-02-14"},"qwen3-8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":0.94,"cache_read":0.3},"updated":"2026-09-17"},"step-3-7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":131072},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":393216},"cost":{"input":0.424,"output":1.272,"cache_read":0.424},"updated":"2026-07-31"},"glm-5-2":{"name":"GLM 5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"updated":"2026-06-13"},"qwen3-8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2},"updated":"2026-08-03"},"muse-spark-1-1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"updated":"2026-07-09"},"glm-5-3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.075},"updated":"2026-08-26"},"qwen3-7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":2.5},"updated":"2026-06-12"},"qwen3-5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":1.032,"cache_read":0.172},"updated":"2026-02-15"},"kimi-k2-7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":256000,"output":131072},"cost":{"input":1.9,"output":8,"cache_read":1.9},"updated":"2026-06-12"},"seed-2-0-mini":{"name":"Seed 2.0 Mini","limit":{"context":256000,"output":128000},"cost":{"input":0.12,"output":0.5,"cache_read":0.12},"updated":"2026-02-14"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3,"cache_read":1.65},"updated":"2026-06-12"},"mimo-v2-5":{"name":"MiMo V2.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.7,"output":1.4,"cache_read":0.014},"updated":"2026-04-22"},"glm-5-1":{"name":"GLM 5.1","limit":{"context":202000,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.165},"updated":"2026-06-12"},"minimax-m2-7-highspeed":{"name":"MiniMax M2.7 Highspeed","limit":{"context":200000,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-03-18"},"qwen3-6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.5},"updated":"2026-04-02"},"glm-4-5-flash":{"name":"GLM 4.5 Flash","limit":{"context":200000,"output":98304},"cost":{"input":0,"output":0},"updated":"2025-07-28"},"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1024000,"output":131072},"cost":{"input":1,"output":2.7,"cache_read":0.05},"updated":"2026-09-20"},"step-3-5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-04-02"},"seed-2-1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":256000,"output":65536},"cost":{"input":0.63,"output":3.13,"cache_read":0.63},"updated":"2026-06-23"},"muse-spark-1-3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"updated":"2026-09-02"},"kimi-k2-6":{"name":"Kimi K2.6","limit":{"context":256000,"output":16000},"cost":{"input":0.8939,"output":3.7131,"cache_read":0.1788},"updated":"2026-06-12"},"seed-2-0-code":{"name":"Seed 2.0 Code","limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.4},"updated":"2026-02-14"},"qwen3-5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":256000,"output":64000},"cost":{"input":0.115,"output":0.917,"cache_read":0.115},"updated":"2026-02-23"},"qwen3-6-35b-a3b":{"name":"Qwen3.6 35B A3B","limit":{"context":131072,"output":16384},"cost":{"input":0.07,"output":0.42,"cache_read":0.035},"updated":"2026-04-17"},"qwen3-8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.16},"updated":"2026-08-26"},"step-3-5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-02-13"},"mimo-v2-6-pro":{"name":"MiMo V2.6 Pro","limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.435},"updated":"2026-09-22"},"fugu-ultra-v1-0":{"name":"Fugu Ultra v1.0","limit":{"context":1000000,"output":131072},"cost":{"input":7.5,"output":45,"cache_read":1.5},"updated":"2026-06-15"},"deepseek-v4-1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"updated":"2026-10-17"},"minimax-m2-7":{"name":"MiniMax M2.7","limit":{"context":200000,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.03},"updated":"2026-03-18"},"qwen3-8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2},"updated":"2026-08-03"},"qwen3-5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.36,"output":2.21,"cache_read":0.36},"updated":"2026-02-16"},"gemma-3-27b":{"name":"Gemma 3 27B","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-03-12"},"fugu-ultra-v2-0":{"name":"Fugu Ultra v2.0","limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"qwen3-5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.09,"output":0.368,"cache_read":0.09},"updated":"2026-02-23"},"glm-4-6v-flash":{"name":"GLM 4.6V Flash","limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-12-08"},"qwen3-6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.25},"updated":"2026-04-27"},"mimo-v2-6-flash":{"name":"MiMo V2.6 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"updated":"2026-09-22"},"gemma-4-26b-a4b":{"name":"Gemma 4 26B-A4B","limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.29,"cache_read":0.025},"updated":"2026-06-12"},"muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"updated":"2026-08-10"},"qwen3-7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006},"updated":"2026-07-15"},"glm-4-7-flash":{"name":"GLM 4.7 Flash","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01-19"},"deepseek-v4-1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"updated":"2026-09-10"},"mimo-v2-5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":2.175,"output":4.35,"cache_read":0.018},"updated":"2026-04-22"},"muse-spark-1-2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"updated":"2026-08-05"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":3},"updated":"2026-07-16"},"qwen3-8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.17,"output":0.5,"cache_read":0.08},"updated":"2026-08-14"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"updated":"2026-08-22"},"kimi-k2-7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.95},"updated":"2026-06-12"},"seed-2-0-lite":{"name":"Seed 2.0 Lite","limit":{"context":256000,"output":128000},"cost":{"input":0.31,"output":2.5,"cache_read":0.31},"updated":"2026-02-14"},"qwen3-5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13,"cache_read":0.045},"updated":"2026-02-23"},"minimax-m3":{"name":"MiniMax M3","limit":{"context":1000000,"output":524288},"cost":{"input":0.225,"output":0.9,"cache_read":0.045},"updated":"2026-06-12"},"glm-5-3":{"name":"GLM 5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"updated":"2026-08-14"},"mimo-v2-6-pro-ultraspeed":{"name":"MiMo V2.6 Pro UltraSpeed","limit":{"context":1000000,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":4.35},"updated":"2026-09-21"},"qwen3-5-27b":{"name":"Qwen3.5 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.086,"output":0.688,"cache_read":0.086},"updated":"2026-02-23"},"fugu-ultra-v1-1":{"name":"Fugu Ultra v1.1","limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"qwen3-6-27b":{"name":"Qwen3.6 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.412564,"output":2.475384,"cache_read":0.412564},"updated":"2026-04-22"},"qwen3-7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.4},"updated":"2026-06-12"},"fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"}}},"freemodel":{"name":"FreeModel","npm":"@ai-sdk/anthropic","models":{"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"updated":"2026-03-17"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"updated":"2026-04-23"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5},"updated":"2026-03-05"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75},"updated":"2026-02-05"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"}}},"zhipuai":{"name":"Zhipu AI","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-08-14"},"glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":5,"output":22,"cache_read":1.2,"cache_write":0},"updated":"2026-04-01"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-03-27"},"glm-5.3-flashx":{"name":"GLM-5.3-FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"updated":"2026-09-18"},"glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"updated":"2026-02-11"},"glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"},"glm-4.5-flash":{"name":"GLM-4.5-Flash","limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-07-28"},"glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-19"},"glm-4.5v":{"name":"GLM-4.5V","limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"updated":"2025-07-28"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"glm-4.6v-flash":{"name":"GLM-4.6V-Flash","limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-08"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-12-22"},"glm-4.7-flashx":{"name":"GLM-4.7-FlashX","limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"}}},"tokengo":{"name":"TokenGo","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"deepseek/deepseek-v3.1":{"name":"DeepSeek-V3.1","limit":{"context":131072,"output":8192},"cost":{"input":0.19,"output":0.71,"cache_read":0.06},"updated":"2025-08-21"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87},"updated":"2026-04-24"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":64000},"cost":{"input":0.2174,"output":0.326,"cache_read":0.06},"updated":"2025-12-01"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.098,"output":0.196,"cache_read":0.028},"updated":"2026-04-24"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.025,"cache_read":0.015},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":0.89,"output":3.2647,"cache_read":0.2226},"updated":"2026-02-12"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":2.65,"cache_read":0.2},"updated":"2026-02-15"}}},"github-copilot":{"name":"GitHub Copilot","npm":"@ai-sdk/openai-compatible","models":{"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"mai-code-1.1-flash":{"name":"MAI-Code-1.1-Flash","limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"updated":"2026-08-11"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"mai-code-1-flash-picker":{"name":"MAI-Code-1-Flash","limit":{"context":256000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-06-08"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":200000,"output":32000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":32000},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":264000,"output":64000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-07-21"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":200000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"}}},"klokintegration":{"name":"klokintegration.se","npm":"@ai-sdk/openai-compatible","models":{"Kloker":{"name":"Kloker","limit":{"context":200000,"output":50000},"cost":{"input":0.23,"output":1.16},"updated":"2026-08-29"},"Kloker-Integration-Developer":{"name":"Kloker Integration Developer","limit":{"context":200000,"output":50000},"cost":{"input":0.23,"output":1.16},"updated":"2026-08-29"},"Kloker-Integration-Architect":{"name":"Kloker Integration Architect","limit":{"context":200000,"output":50000},"cost":{"input":0.23,"output":1.16},"updated":"2026-08-29"}}},"volcengine":{"name":"Volcengine Ark","npm":"@ai-sdk/openai-compatible","models":{"doubao-seed-evolving":{"name":"Seed Evolving","limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812},"updated":"2026-06-23"},"doubao-seed-2-0-lite-260428":{"name":"Seed 2.0 Lite","limit":{"context":256000,"output":131072},"cost":{"input":0.08906,"output":0.53436,"cache_read":0.01781},"updated":"2026-02-14"},"doubao-seed-1-6-flash-250828":{"name":"Seed 1.6 Flash","limit":{"context":256000,"output":32000},"cost":{"input":0.02227,"output":0.22265,"cache_read":0.00445},"updated":"2025-08-28"},"doubao-seed-1-8-251228":{"name":"Seed 1.8","limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375},"updated":"2025-12-28"},"deepseek-v4-pro-ga-260813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.3359,"output":4.00771,"cache_read":0.04453},"updated":"2026-08-22"},"glm-5-2-260617":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.18747,"output":4.15615,"cache_read":0.29687},"updated":"2026-06-13"},"doubao-seed-2-1-pro-260628":{"name":"Seed 2.1 Pro","limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812},"updated":"2026-06-23"},"doubao-seed-1-6-vision-250815":{"name":"Seed 1.6 Vision","limit":{"context":256000,"output":32000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375},"updated":"2025-08-15"},"doubao-seed-1-6-251015":{"name":"Seed 1.6","limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375},"updated":"2025-10-15"},"doubao-seed-2-0-mini-260428":{"name":"Seed 2.0 Mini","limit":{"context":256000,"output":131072},"cost":{"input":0.02969,"output":0.29687,"cache_read":0.00594},"updated":"2026-02-14"},"doubao-seed-2-0-code-preview-260215":{"name":"Seed 2.0 Code","limit":{"context":262144,"output":131072},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095},"updated":"2026-02-14"},"doubao-seed-2-0-pro-260215":{"name":"Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095},"updated":"2026-02-14"},"deepseek-v4-flash-ga-260731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.4453,"output":1.3359,"cache_read":0.01484},"updated":"2026-07-31"},"glm-5-3-flash-260828":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.11875,"output":0.41563,"cache_read":0.03414},"updated":"2026-08-26"},"doubao-seed-character-260628":{"name":"Seed Character","limit":{"context":256000,"output":256000},"cost":{"input":0.11875,"output":0.29687,"cache_read":0.02375},"updated":"2026-06-23"},"doubao-seed-2-1-turbo-260628":{"name":"Seed 2.1 Turbo","limit":{"context":256000,"output":256000},"cost":{"input":0.4453,"output":2.22651,"cache_read":0.08906},"updated":"2026-06-23"}}},"amazon-bedrock":{"name":"Amazon Bedrock","npm":"@ai-sdk/amazon-bedrock","models":{"global.openai.gpt-5.6-terra":{"name":"GPT-5.6 Terra (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"global.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"us.meta.llama3-1-70b-instruct-v1:0":{"name":"Llama 3.1 70B Instruct (US)","limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"updated":"2024-07-23"},"moonshotai.kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":16384},"cost":{"input":0.6,"output":3},"updated":"2026-02-06"},"us.moonshotai.kimi-k3":{"name":"Kimi K3 (US)","limit":{"context":1048576,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-07-16"},"global.openai.gpt-6-sol":{"name":"GPT-6 Sol (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"us.anthropic.claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"amazon.nova-micro-v1:0":{"name":"Nova Micro","limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"updated":"2024-12-03"},"au.anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"updated":"2026-09-22"},"global.xai.grok-4.6":{"name":"Grok 4.6 (Global)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-18"},"amazon.nova-pro-v1:0":{"name":"Nova Pro","limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"updated":"2024-12-03"},"global.anthropic.claude-opus-4-5-20251101-v1:0":{"name":"Claude Opus 4.5 (Global)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"us.anthropic.claude-opus-4-1-20250805-v1:0":{"name":"Claude Opus 4.1 (US)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"mistral.mistral-large-3-675b-instruct":{"name":"Mistral Large 3","limit":{"context":262144,"output":8192},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"us.anthropic.claude-opus-5":{"name":"Claude Opus 5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"jp.anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-10-07"},"openai.gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-09-04"},"openai.gpt-5.4":{"name":"GPT-5.4","limit":{"context":1000000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275},"updated":"2026-06-01"},"anthropic.claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"us.meta.llama4-maverick-17b-instruct-v1:0":{"name":"Llama 4 Maverick 17B Instruct (US)","limit":{"context":1000000,"output":8192},"cost":{"input":0.24,"output":0.97},"updated":"2025-04-05"},"eu.anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"us.writer.palmyra-x5-v1:0":{"name":"Palmyra X5 (US)","limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6},"updated":"2025-04-28"},"anthropic.claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"writer.palmyra-x4-v1:0":{"name":"Palmyra X4","limit":{"context":122880,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-04-28"},"apac.amazon.nova-micro-v1:0":{"name":"Nova Micro (APAC)","limit":{"context":128000,"output":10000},"cost":{"input":0.037,"output":0.148,"cache_read":0.00925,"cache_write":0.037},"updated":"2024-12-03"},"openai.gpt-5.5":{"name":"GPT-5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55},"updated":"2026-06-01"},"in.openai.gpt-5.6-terra":{"name":"GPT-5.6 Terra (India)","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"updated":"2026-07-09"},"openai.gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-09-22"},"au.anthropic.claude-sonnet-4-6":{"name":"AU Anthropic Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"eu.amazon.nova-2-lite-v1:0":{"name":"Nova 2 Lite (EU)","limit":{"context":1000000,"output":65535},"cost":{"input":0.374,"output":3.157,"cache_read":0.0935,"cache_write":0.374},"updated":"2025-12-01"},"au.anthropic.claude-opus-4-6-v1":{"name":"AU Anthropic Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-03-13"},"openai.gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"updated":"2026-07-09"},"us.openai.gpt-6-luna":{"name":"GPT-6 Luna (US)","limit":{"context":1050000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-09-22"},"us.xai.grok-4.7":{"name":"Grok 4.7 (US)","limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"updated":"2026-09-28"},"meta.llama3-3-70b-instruct-v1:0":{"name":"Llama 3.3 70B Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"updated":"2024-12-06"},"eu.amazon.nova-pro-v1:0":{"name":"Nova Pro (EU)","limit":{"context":300000,"output":10000},"cost":{"input":0.92,"output":3.68,"cache_read":0.23,"cache_write":0.92},"updated":"2024-12-03"},"eu.mistral.pixtral-large-2502-v1:0":{"name":"Pixtral Large (25.02) (EU)","limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"updated":"2025-04-08"},"moonshot.kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":16000},"cost":{"input":0.6,"output":2.5},"updated":"2025-12-02"},"mistral.voxtral-small-24b-2507":{"name":"Voxtral Small 24B 2507","limit":{"context":32768,"output":8192},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"},"deepseek.v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":81920},"cost":{"input":0.62,"output":1.85},"updated":"2026-02-06"},"openai.gpt-oss-safeguard-120b":{"name":"GPT OSS Safeguard 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-29"},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{"name":"Claude Opus 4.5 (EU)","limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2025-11-01"},"us.amazon.nova-2-lite-v1:0":{"name":"Nova 2 Lite (US)","limit":{"context":1000000,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.0825,"cache_write":0.33},"updated":"2025-12-01"},"minimax.minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-12-23"},"zai.glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":202752,"output":131072},"cost":{"input":0.07,"output":0.4},"updated":"2026-01-19"},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5 (Global)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"global.anthropic.claude-fable-5":{"name":"Claude Fable 5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"global.openai.gpt-5.6-luna":{"name":"GPT-5.6 Luna (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"eu.anthropic.claude-opus-4-6-v1":{"name":"Claude Opus 4.6 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-03-13"},"anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"us.anthropic.claude-fable-5":{"name":"Claude Fable 5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"jp.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (JP)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"eu.anthropic.claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"updated":"2026-09-28"},"google.gemma-4-26b-a4b":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"deepseek.v3-v1:0":{"name":"DeepSeek-V3.1","limit":{"context":163840,"output":81920},"cost":{"input":0.58,"output":1.68},"updated":"2025-09-18"},"qwen.qwen3-235b-a22b-2507-v1:0":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262144,"output":131072},"cost":{"input":0.22,"output":0.88},"updated":"2025-09-18"},"minimax.minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":98304},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-18"},"us.mistral.pixtral-large-2502-v1:0":{"name":"Pixtral Large (25.02) (US)","limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"updated":"2025-04-08"},"global.openai.gpt-6-astra":{"name":"GPT-6 Astra (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"nvidia.nemotron-nano-12b-v2":{"name":"NVIDIA Nemotron Nano 12B v2 VL BF16","limit":{"context":131072,"output":8192},"cost":{"input":0.2,"output":0.6},"updated":"2025-10-28"},"apac.anthropic.claude-sonnet-4-20250514-v1:0":{"name":"Claude Sonnet 4 (APAC)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"global.anthropic.claude-opus-4-6-v1":{"name":"Claude Opus 4.6 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"au.anthropic.claude-opus-5":{"name":"Claude Opus 5 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"us.writer.palmyra-x4-v1:0":{"name":"Palmyra X4 (US)","limit":{"context":122880,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-04-28"},"anthropic.claude-opus-4-1-20250805-v1:0":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"meta.llama4-scout-17b-instruct-v1:0":{"name":"Llama 4 Scout 17B Instruct","limit":{"context":10000000,"output":8192},"cost":{"input":0.17,"output":0.66},"updated":"2025-04-05"},"us.openai.gpt-5.6-sol":{"name":"GPT-5.6 Sol (US)","limit":{"context":1050000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5},"updated":"2026-07-09"},"jp.anthropic.claude-opus-5":{"name":"Claude Opus 5 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"qwen.qwen3-next-80b-a3b":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":262144,"output":262000},"cost":{"input":0.15,"output":1.2},"updated":"2025-11-25"},"anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"au.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"openai.gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-09-22"},"global.openai.gpt-5.6-sol":{"name":"GPT-5.6 Sol (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"us.anthropic.claude-opus-4-6-v1":{"name":"Claude Opus 4.6 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-03-13"},"mistral.magistral-small-2509":{"name":"Magistral Small 1.2","limit":{"context":128000,"output":40000},"cost":{"input":0.5,"output":1.5},"updated":"2025-09-18"},"global.moonshotai.kimi-k3":{"name":"Kimi K3 (Global)","limit":{"context":1048576,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-07-16"},"us.openai.gpt-5.6-terra":{"name":"GPT-5.6 Terra (US)","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"updated":"2026-07-09"},"us.anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"updated":"2026-09-22"},"global.anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"in.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (India)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"global.anthropic.claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"qwen.qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.5,"output":1.2},"updated":"2026-02-06"},"openai.gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"updated":"2026-09-29"},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5 (JP)","limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"anthropic.claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"us.openai.gpt-5.6-luna":{"name":"GPT-5.6 Luna (US)","limit":{"context":1050000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"us.deepseek.r1-v1:0":{"name":"DeepSeek-R1 (US)","limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"updated":"2025-05-29"},"anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"us.anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"global.amazon.nova-2-lite-v1:0":{"name":"Nova 2 Lite (Global)","limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.3},"updated":"2025-12-01"},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (US)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"apac.amazon.nova-pro-v1:0":{"name":"Nova Pro (APAC)","limit":{"context":300000,"output":10000},"cost":{"input":0.84,"output":3.36,"cache_read":0.21,"cache_write":0.84},"updated":"2024-12-03"},"anthropic.claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"us.zai.glm-5.3":{"name":"GLM-5.3 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":1.848,"output":5.808,"cache_read":0.3432,"cache_write":2.31},"updated":"2026-08-14"},"global.anthropic.claude-opus-5":{"name":"Claude Opus 5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"global.anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"global.anthropic.claude-fable-5-1":{"name":"Claude Fable 5.1 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"global.anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"us.anthropic.claude-opus-4-5-20251101-v1:0":{"name":"Claude Opus 4.5 (US)","limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2025-11-01"},"qwen.qwen3-vl-235b-a22b":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":262144,"output":262000},"cost":{"input":0.53,"output":2.66},"updated":"2025-11-25"},"us-gov.openai.gpt-oss-20b-1:0":{"name":"gpt-oss-20b (GovCloud)","limit":{"context":128000,"output":16384},"cost":{"input":0.084,"output":0.36},"updated":"2025-08-05"},"eu.anthropic.claude-opus-5":{"name":"Claude Opus 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"jp.anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"updated":"2026-09-22"},"us.openai.gpt-6-astra":{"name":"GPT-6 Astra (US)","limit":{"context":1050000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-09-04"},"eu.anthropic.claude-sonnet-4-20250514-v1:0":{"name":"Claude Sonnet 4 (EU)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"meta.llama3-1-8b-instruct-v1:0":{"name":"Llama 3.1 8B Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.22,"output":0.22},"updated":"2024-07-23"},"us.openai.gpt-6-sol":{"name":"GPT-6 Sol (US)","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-09-22"},"mistral.voxtral-mini-3b-2507":{"name":"Voxtral Mini 3B 2507","limit":{"context":32768,"output":4096},"cost":{"input":0.04,"output":0.04},"updated":"2025-07-15"},"meta.llama4-maverick-17b-instruct-v1:0":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":1000000,"output":8192},"cost":{"input":0.24,"output":0.97},"updated":"2025-04-05"},"openai.gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5},"updated":"2026-07-09"},"openai.gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.2},"updated":"2025-10-29"},"xai.grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-06-28"},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (EU)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"eu.anthropic.claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"mistral.ministral-3-3b-instruct":{"name":"Ministral 3 3B","limit":{"context":256000,"output":8192},"cost":{"input":0.1,"output":0.1},"updated":"2025-12-02"},"google.gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.38},"updated":"2025-03-12"},"eu.amazon.nova-micro-v1:0":{"name":"Nova Micro (EU)","limit":{"context":128000,"output":10000},"cost":{"input":0.04,"output":0.16,"cache_read":0.01,"cache_write":0.04},"updated":"2024-12-03"},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5 (AU)","limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"eu.amazon.nova-lite-v1:0":{"name":"Nova Lite (EU)","limit":{"context":300000,"output":10000},"cost":{"input":0.069,"output":0.276,"cache_read":0.01725,"cache_write":0.069},"updated":"2024-12-03"},"in.anthropic.claude-opus-5":{"name":"Claude Opus 5 (India)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"meta.llama3-1-70b-instruct-v1:0":{"name":"Llama 3.1 70B Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"updated":"2024-07-23"},"us.amazon.nova-premier-v1:0":{"name":"Nova Premier (US)","limit":{"context":1000000,"output":10000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625,"cache_write":2.5},"updated":"2025-04-30"},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (AU)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"writer.palmyra-x5-v1:0":{"name":"Palmyra X5","limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6},"updated":"2025-04-28"},"us.amazon.nova-pro-v1:0":{"name":"Nova Pro (US)","limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"updated":"2024-12-03"},"us.anthropic.claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"updated":"2026-09-28"},"minimax.minimax-m2":{"name":"MiniMax-M2","limit":{"context":204608,"output":128000},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"anthropic.claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{"name":"Claude Haiku 4.5 (Global)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"nvidia.nemotron-nano-9b-v2":{"name":"NVIDIA Nemotron Nano 9B v2","limit":{"context":131072,"output":8192},"cost":{"input":0.06,"output":0.23},"updated":"2025-08-18"},"mistral.devstral-2-123b":{"name":"Devstral 2 123B","limit":{"context":262144,"output":8192},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"au.anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-05-28"},"au.anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"us.anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-10-07"},"jp.anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"deepseek.r1-v1:0":{"name":"DeepSeek-R1","limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"updated":"2025-05-29"},"mistral.ministral-3-14b-instruct":{"name":"Ministral 14B 3.0","limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2},"updated":"2025-12-02"},"qwen.qwen3-coder-30b-a3b-v1:0":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6},"updated":"2025-09-18"},"openai.gpt-oss-20b":{"name":"gpt-oss-20b","limit":{"context":131072,"output":131072},"cost":{"input":0.07,"output":0.3},"updated":"2025-08-05"},"us.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"global.anthropic.claude-sonnet-4-20250514-v1:0":{"name":"Claude Sonnet 4 (Global)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"openai.gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"jp.anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-05-28"},"anthropic.claude-opus-4-6-v1":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-03-13"},"jp.anthropic.claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"us-gov.openai.gpt-oss-120b-1:0":{"name":"gpt-oss-120b (GovCloud)","limit":{"context":128000,"output":16384},"cost":{"input":0.18,"output":0.72},"updated":"2025-08-05"},"openai.gpt-oss-120b-1:0":{"name":"gpt-oss-120b","limit":{"context":131072,"output":128000},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"in.openai.gpt-5.6-luna":{"name":"GPT-5.6 Luna (India)","limit":{"context":1050000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"amazon.nova-lite-v1:0":{"name":"Nova Lite","limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"updated":"2024-12-03"},"global.openai.gpt-6-luna":{"name":"GPT-6 Luna (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"mistral.pixtral-large-2502-v1:0":{"name":"Pixtral Large (25.02)","limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"updated":"2025-04-08"},"anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"openai.gpt-oss-20b-1:0":{"name":"gpt-oss-20b","limit":{"context":131072,"output":128000},"cost":{"input":0.07,"output":0.3},"updated":"2025-08-05"},"us.meta.llama3-1-8b-instruct-v1:0":{"name":"Llama 3.1 8B Instruct (US)","limit":{"context":128000,"output":4096},"cost":{"input":0.22,"output":0.22},"updated":"2024-07-23"},"eu.anthropic.claude-fable-5":{"name":"Claude Fable 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"eu.anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-10-07"},"us.anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-05-28"},"apac.amazon.nova-lite-v1:0":{"name":"Nova Lite (APAC)","limit":{"context":300000,"output":10000},"cost":{"input":0.063,"output":0.252,"cache_read":0.01575,"cache_write":0.063},"updated":"2024-12-03"},"global.openai.gpt-6.1-sol":{"name":"GPT-6.1 Sol (Global)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"zai.glm-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2},"updated":"2026-03-18"},"eu.anthropic.claude-opus-5-5":{"name":"Claude Opus 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"updated":"2026-09-22"},"us.amazon.nova-lite-v1:0":{"name":"Nova Lite (US)","limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"updated":"2024-12-03"},"anthropic.claude-opus-4-5-20251101-v1:0":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"us.xai.grok-4.6":{"name":"Grok 4.6 (US)","limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"updated":"2026-08-18"},"qwen.qwen3-32b-v1:0":{"name":"Qwen3 32B","limit":{"context":32768,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2025-09-18"},"amazon.nova-2-lite-v1:0":{"name":"Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.0825,"cache_write":0.33},"updated":"2025-12-01"},"global.xai.grok-4.7":{"name":"Grok 4.7 (Global)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-28"},"zai.glm-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2},"updated":"2025-12-22"},"eu.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"nvidia.nemotron-nano-3-30b":{"name":"NVIDIA Nemotron Nano 3 30B","limit":{"context":262144,"output":8192},"cost":{"input":0.06,"output":0.24},"updated":"2025-12-23"},"global.anthropic.claude-opus-4-7":{"name":"Claude Opus 4.7 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"mistral.ministral-3-8b-instruct":{"name":"Ministral 3 8B","limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.15},"updated":"2025-12-02"},"google.gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":8192},"cost":{"input":0.09,"output":0.29},"updated":"2025-03-12"},"eu.anthropic.claude-opus-4-8":{"name":"Claude Opus 4.8 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-05-28"},"google.gemma-4-e2b":{"name":"Gemma 4 E2B IT","limit":{"context":131072,"output":8192},"cost":{"input":0.04,"output":0.08},"updated":"2026-04-02"},"qwen.qwen3-coder-480b-a35b-v1:0":{"name":"Qwen3-Coder 480B-A35B Instruct","limit":{"context":131072,"output":65536},"cost":{"input":0.45,"output":1.8},"updated":"2025-09-18"},"us.meta.llama4-scout-17b-instruct-v1:0":{"name":"Llama 4 Scout 17B Instruct (US)","limit":{"context":10000000,"output":8192},"cost":{"input":0.17,"output":0.66},"updated":"2025-04-05"},"nvidia.nemotron-super-3-120b":{"name":"NVIDIA Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.65},"updated":"2026-03-11"},"jp.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (JP)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"us.openai.gpt-6.1-sol":{"name":"GPT-6.1 Sol (US)","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"updated":"2026-09-29"},"xai.grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"updated":"2026-08-18"},"google.gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":4096},"cost":{"input":0.04,"output":0.08},"updated":"2025-03-12"},"in.anthropic.claude-sonnet-5":{"name":"Claude Sonnet 5 (India)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"openai.gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"google.gemma-4-31b":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"au.anthropic.claude-haiku-5-5":{"name":"Claude Haiku 5.5 (AU)","limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375},"updated":"2026-10-07"},"ca.amazon.nova-lite-v1:0":{"name":"Nova Lite (CA)","limit":{"context":300000,"output":10000},"cost":{"input":0.064,"output":0.256,"cache_read":0.016,"cache_write":0.064},"updated":"2024-12-03"},"us.meta.llama3-3-70b-instruct-v1:0":{"name":"Llama 3.3 70B Instruct (US)","limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"updated":"2024-12-06"},"jp.amazon.nova-2-lite-v1:0":{"name":"Nova 2 Lite (JP)","limit":{"context":1000000,"output":65535},"cost":{"input":0.396,"output":3.311,"cache_read":0.099,"cache_write":0.396},"updated":"2025-12-01"},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5 (US)","limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"us.anthropic.claude-sonnet-4-20250514-v1:0":{"name":"Claude Sonnet 4 (US)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"us.anthropic.claude-fable-5-1":{"name":"Claude Fable 5.1 (US)","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"updated":"2026-09-01"},"global.zai.glm-5.3":{"name":"GLM-5.3 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":1.68,"output":5.28,"cache_read":0.312,"cache_write":2.1},"updated":"2026-08-14"},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5 (EU)","limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"anthropic.claude-sonnet-4-5-20250929-v1:0":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"global.anthropic.claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (Global)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"us.amazon.nova-micro-v1:0":{"name":"Nova Micro (US)","limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"updated":"2024-12-03"}}},"ainetcafe":{"name":"ainetcafe","npm":"@ai-sdk/openai-compatible","models":{"Kimi-K3":{"name":"Kimi K3","limit":{"context":262144,"output":32768},"cost":{"input":2.1,"output":10.5,"cache_read":0.3},"updated":"2026-07-16"}}},"zai-coding-plan":{"name":"Z.AI Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"glm-5.3-highspeed":{"name":"GLM-5.3 Highspeed","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-13"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-22"},"glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-16"},"glm-5.2-highspeed":{"name":"GLM-5.2 Highspeed","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-13"}}},"pioneer":{"name":"Pioneer","npm":"@ai-sdk/openai-compatible","models":{"qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":240000,"output":64000},"cost":{"input":1.04,"output":6.24,"cache_read":0.208,"cache_write":1.3},"updated":"2026-04-20"},"devstral-small-2":{"name":"Devstral Small 2","limit":{"context":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.1,"cache_write":0.1},"updated":"2025-12-09"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25,"cache_write":2.5},"updated":"2024-08-06"},"ministral-3b":{"name":"Ministral 3B","limit":{"context":128000,"output":4000},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2024-10-16"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"mistral-large-3":{"name":"Mistral Large 3","limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5},"updated":"2025-12-02"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"updated":"2026-06-02"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03,"cache_write":0.25},"updated":"2026-05-07"},"gemini-3-flash":{"name":"Gemini 3 Flash Preview","limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333},"updated":"2025-12-17"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"updated":"2026-04-23"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.2,"cache_write":0.4},"updated":"2025-04-14"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05,"cache_write":0.1},"updated":"2025-04-14"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005,"cache_write":0.05},"updated":"2025-08-07"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5},"updated":"2026-03-05"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"updated":"2026-07-21"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_read":0.0375,"cache_write":0.234375},"updated":"2026-04-27"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15},"updated":"2024-07-18"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025,"cache_write":0.25},"updated":"2025-08-07"},"mistral-medium":{"name":"Mistral Medium 3","limit":{"context":128000,"output":64000},"cost":{"input":0.4,"output":2,"cache_read":0.4,"cache_write":0.4},"updated":"2025-05-07"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75},"updated":"2026-02-05"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":1.5},"updated":"2026-07-21"},"ministral-14b":{"name":"Ministral 14B","limit":{"context":256000,"output":131072},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2025-12-02"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-opus-5-fast":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-07-24"},"devstral-2":{"name":"Devstral 2","limit":{"context":256000,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.4,"cache_write":0.4},"updated":"2025-12-09"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.325,"output":1.95,"cache_read":0.065,"cache_write":0.40625},"updated":"2026-04-02"},"claude-opus-4-1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":131072},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25},"updated":"2025-11-13"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-07-08"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":1047576,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2},"updated":"2026-03-17"},"gemini-3.1-pro":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-19"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":1,"cache_write":2},"updated":"2025-04-14"},"magistral-medium":{"name":"Magistral Medium (latest)","limit":{"context":128000,"output":64000},"cost":{"input":2,"output":5,"cache_read":2,"cache_write":2},"updated":"2025-03-20"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":991000,"output":64000},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.5625},"updated":"2026-05-21"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"mistral-medium-3.5":{"name":"Mistral Medium 3.5","limit":{"context":256000,"output":131072},"cost":{"input":1.5,"output":7.5,"cache_read":1.5,"cache_write":1.5},"updated":"2026-04-29"},"claude-3-7-sonnet-latest":{"name":"Claude Sonnet 3.7","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-02-19"},"LiquidAI/LFM2-24B-A2B":{"name":"LFM2 24B A2B","limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12,"cache_read":0.03,"cache_write":0.03},"updated":"2026-02-25"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"updated":"2026-06-15"},"meta-llama/Llama-3.2-3B":{"name":"Llama-3.2-3B","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2024-09-25"},"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":16384,"output":16384},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9},"updated":"2024-12-06"},"meta-llama/Llama-3.2-3B-Instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":131072,"output":80000},"cost":{"input":0.1,"output":0.335,"cache_read":0.1,"cache_write":0.1},"updated":"2024-09-25"},"meta-llama/Llama-3.1-8B-Instruct":{"name":"Llama 3.1 8B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2024-07-23"},"meta-llama/Llama-3.2-1B":{"name":"Llama-3.2-1B","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2024-09-25"},"meta-llama/Llama-3.2-1B-Instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":131072,"output":60000},"cost":{"input":0.1,"output":0.201,"cache_read":0.1,"cache_write":0.1},"updated":"2024-09-25"},"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":202000,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182,"cache_write":0.98},"updated":"2026-04-07"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1040000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":1.4},"updated":"2026-06-13"},"zai-org/GLM-5.2-Fast":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":2.1,"output":6.6,"cache_read":0.21,"cache_write":2.1},"updated":"2026-06-13"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.035,"cache_write":0.07},"updated":"2025-08-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15},"updated":"2025-08-05"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15,"cache_write":1.25},"updated":"2026-07-09"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.3},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131000},"cost":{"input":0.279,"output":1.2,"cache_read":0.279,"cache_write":0.279},"updated":"2026-03-18"},"pioneer/auto":{"name":"Pioneer Auto","limit":{"context":1048576,"output":4096},"updated":"2025-06-29"},"XiaomiMiMo/MiMo-V2.5":{"name":"MiMo-V2.5","limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0.14},"updated":"2026-04-22"},"XiaomiMiMo/MiMo-V2.5-Pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1050000,"output":131000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0.435},"updated":"2026-04-22"},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":256000,"output":32000},"cost":{"input":0.09,"output":0.45,"cache_read":0.09,"cache_write":0.09},"updated":"2026-03-11"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":2.5,"cache_read":0.15,"cache_write":0.5},"updated":"2026-06-04"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5},"updated":"2026-08-11"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.05,"cache_write":0.05},"updated":"2025-12-15"},"nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4":{"name":"Nemotron 3.5 Super VL 120B A12B","limit":{"context":262144,"output":4096},"cost":{"input":0.08,"output":0.45,"cache_read":0.04,"cache_write":0.08},"updated":"2026-10-15"},"poolside/laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01,"cache_write":0.1},"updated":"2026-07-21"},"Qwen/Qwen2.5-Coder-0.5B":{"name":"Qwen2.5-Coder-0.5B","limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2024-11-12"},"Qwen/Qwen3-1.7B-Base":{"name":"Qwen3 1.7B Base","limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2025-03-31"},"Qwen/Qwen3-32B":{"name":"Qwen3 32B","limit":{"context":131072,"output":8192},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9},"updated":"2025-04"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":1,"cache_read":0.028,"cache_write":0.175},"updated":"2026-04-17"},"Qwen/Qwen3-8B":{"name":"Qwen3 8B","limit":{"context":40960,"output":40960},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2025-04-28"},"Qwen/Qwen3-4B-Base":{"name":"Qwen3 4B Base","limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-03-31"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":32768,"output":32768},"cost":{"input":0.6,"output":0.6,"cache_read":0.6,"cache_write":0.6},"updated":"2026-04-22"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262144,"output":131072},"cost":{"input":1.2,"output":1.2,"cache_read":1.2,"cache_write":1.2},"updated":"2025-07-21"},"Qwen/Qwen3.5-9B":{"name":"Qwen3.5 9B","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3,"cache_read":0.3,"cache_write":0.3},"updated":"2026-02-23"},"Qwen/Qwen3-4B-Instruct-2507":{"name":"Qwen3 4B Instruct","limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2025-07-31"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19,"cache_write":0.95},"updated":"2026-06-12"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.34,"cache_write":0.95},"updated":"2026-04-21"},"moonshotai/Kimi-K3-Fast":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45,"cache_write":4.5},"updated":"2026-07-16"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"updated":"2026-07-16"},"fastino/gliner2-multi-v1":{"name":"GLiNER2 Multi","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-11-30"},"fastino/gliguard-PII-multi":{"name":"GLiNER2-Guardrails-PII-Multi","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2026-07-08"},"fastino/gliner2.5-multi-v1":{"name":"GLiNER 2.5 Multi","limit":{"context":4096,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2026-08-24"},"fastino/gliner2-large-v1":{"name":"GLiNER2 Large","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-06-30"},"fastino/gliner2-privacy-filter-PII-multi":{"name":"GLiNER2 Privacy Filter PII (Multi)","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2026-04-30"},"fastino/gliner2-base-v1":{"name":"GLiNER2 Base","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-06-30"},"fastino/gliner2-multi-large-v1":{"name":"GLiNER2 Multi Large","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-11-30"},"fastino/GLiNER-2.5-Decide":{"name":"GLiNER-2.5-Decide","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2026-09-24"},"fastino/gliner2.5-base-v1":{"name":"GLiNER 2.5 Base","limit":{"context":4096,"output":4096},"cost":{"input":0.03,"output":0,"cache_read":0.03,"cache_write":0.03},"updated":"2026-08-24"},"fastino/gliguard-LLMGuardrails-300M":{"name":"GLiGuard LLM Guardrails 300M","limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2026-04-30"},"HuggingFaceTB/SmolLM3-3B-Base":{"name":"SmolLM3 3B Base","limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-06-30"},"google/gemma-4-E2B-it":{"name":"Gemma 4 E2B IT","limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"updated":"2026-04-02"},"google/diffusiongemma-26B-A4B-it":{"name":"DiffusionGemma 26B-A4B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5},"updated":"2026-05-31"},"google/gemma-4-12B-it":{"name":"Gemma 4 12B IT","limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.25,"cache_read":0.25,"cache_write":0.25},"updated":"2026-05-31"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5},"updated":"2026-04-02"},"google/gemma-3-4b-pt":{"name":"Gemma 3 4B (Pretrained)","limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2025-02-28"},"google/gemma-4-E4B-it":{"name":"Gemma 4 E4B IT","limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2026-04-02"},"mistralai/Codestral-22B-v0.1":{"name":"Codestral-22B-v0.1","limit":{"context":128000,"output":4000},"cost":{"input":0.3,"output":0.9,"cache_read":0.3,"cache_write":0.3},"updated":"2024-05-29"},"mistralai/Ministral-8B-Instruct-2410":{"name":"Ministral 8B Instruct","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2024-10-16"},"mistralai/Pixtral-12B-2409":{"name":"Pixtral 12B","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"updated":"2024-09-01"},"mistralai/Magistral-Small-2506":{"name":"Magistral Small","limit":{"context":128000,"output":64000},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5},"updated":"2025-06-10"},"mistralai/Mistral-Small-4-119B-2603":{"name":"Mistral Small 4","limit":{"context":32000,"output":32000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15},"updated":"2026-03-16"},"mistralai/Mistral-7B-Instruct-v0.3":{"name":"Mistral 7B Instruct v0.3","limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"updated":"2023-04-30"},"mistralai/Mistral-Nemo-Instruct-2407":{"name":"Mistral Nemo","limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03,"cache_read":0.02,"cache_write":0.02},"updated":"2024-07-01"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":1000000,"output":131072},"cost":{"input":0.5,"output":1.2,"cache_read":0.1,"cache_write":0.5},"updated":"2026-07-30"},"deepseek-ai/DeepSeek-V3":{"name":"DeepSeek-V3","limit":{"context":163840,"output":8192},"cost":{"input":0.27,"output":1.12,"cache_read":0.135,"cache_write":0.27},"updated":"2024-12-26"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625,"cache_write":0.435},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.0197,"cache_write":0.1},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek-V3.1","limit":{"context":163840,"output":131072},"cost":{"input":0.56,"output":1.68,"cache_read":0.56,"cache_write":0.56},"updated":"2025-08-21"}}},"helicone":{"name":"Helicone","npm":"@ai-sdk/openai-compatible","models":{"o1":{"name":"OpenAI: o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2025-01-01"},"o1-mini":{"name":"OpenAI: o1-mini","limit":{"context":128000,"output":65536},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-01"},"sonar-deep-research":{"name":"Perplexity Sonar Deep Research","limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-01-27"},"gpt-4o":{"name":"OpenAI GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-05-13"},"mistral-nemo":{"name":"Mistral Nemo","limit":{"context":128000,"output":16400},"cost":{"input":20,"output":40},"updated":"2024-07-18"},"claude-opus-4-1-20250805":{"name":"Anthropic: Claude Opus 4.1 (20250805)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gpt-5":{"name":"OpenAI GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2025-01-01"},"gpt-5-chat-latest":{"name":"OpenAI GPT-5 Chat Latest","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2024-09-30"},"claude-4.5-sonnet":{"name":"Anthropic: Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75},"updated":"2025-09-29"},"mistral-large-2411":{"name":"Mistral-Large","limit":{"context":128000,"output":32768},"cost":{"input":2,"output":6},"updated":"2024-07-24"},"claude-sonnet-4-5-20250929":{"name":"Anthropic: Claude Sonnet 4.5 (20250929)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75},"updated":"2025-09-29"},"grok-4-1-fast-non-reasoning":{"name":"xAI Grok 4.1 Fast Non-Reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996},"updated":"2025-11-17"},"o4-mini":{"name":"OpenAI o4 Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2024-06-01"},"llama-prompt-guard-2-86m":{"name":"Meta Llama Prompt Guard 2 86M","limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01},"updated":"2024-10-01"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct","limit":{"context":262000,"output":16384},"cost":{"input":0.14,"output":1.4},"updated":"2025-01-01"},"sonar-pro":{"name":"Perplexity Sonar Pro","limit":{"context":200000,"output":4096},"cost":{"input":3,"output":15},"updated":"2025-01-27"},"qwen3-coder":{"name":"Qwen3 Coder 480B A35B Instruct Turbo","limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.95},"updated":"2025-07-23"},"gpt-5-codex":{"name":"OpenAI: GPT-5 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2025-01-01"},"gpt-4.1-mini":{"name":"OpenAI GPT-4.1 Mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999},"updated":"2025-04-14"},"kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":256000,"output":262144},"cost":{"input":0.48,"output":2},"updated":"2025-11-06"},"llama-prompt-guard-2-22m":{"name":"Meta Llama Prompt Guard 2 22M","limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01},"updated":"2024-10-01"},"grok-3":{"name":"xAI Grok 3","limit":{"context":131072,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2024-06-01"},"sonar-reasoning":{"name":"Perplexity Sonar Reasoning","limit":{"context":127000,"output":4096},"cost":{"input":1,"output":5},"updated":"2025-01-27"},"sonar-reasoning-pro":{"name":"Perplexity Sonar Reasoning Pro","limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-01-27"},"claude-sonnet-4":{"name":"Anthropic: Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75},"updated":"2025-05-14"},"gpt-5.1-chat-latest":{"name":"OpenAI GPT-5.1 Chat","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2025-01-01"},"llama-3.3-70b-instruct":{"name":"Meta Llama 3.3 70B Instruct","limit":{"context":128000,"output":16400},"cost":{"input":0.13,"output":0.39},"updated":"2024-12-06"},"llama-guard-4":{"name":"Meta Llama Guard 4 12B","limit":{"context":131072,"output":1024},"cost":{"input":0.21,"output":0.21},"updated":"2025-01-01"},"llama-3.1-8b-instruct-turbo":{"name":"Meta Llama 3.1 8B Instruct Turbo","limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03},"updated":"2024-07-23"},"gpt-4.1-nano":{"name":"OpenAI GPT-4.1 Nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998},"updated":"2025-04-14"},"llama-4-maverick":{"name":"Meta Llama 4 Maverick 17B 128E","limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2025-01-01"},"gpt-5-nano":{"name":"OpenAI GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cache_read":0.005},"updated":"2025-01-01"},"grok-4-fast-reasoning":{"name":"xAI: Grok 4 Fast Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996},"updated":"2025-09-01"},"qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":1.5},"updated":"2025-09-23"},"chatgpt-4o-latest":{"name":"OpenAI ChatGPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":5,"output":20,"cache_read":2.5},"updated":"2024-08-14"},"gpt-4.1-mini-2025-04-14":{"name":"OpenAI GPT-4.1 Mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999},"updated":"2025-04-14"},"gemini-2.5-flash-lite":{"name":"Google Gemini 2.5 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998,"cache_write":0.09999999999999999},"updated":"2025-07-22"},"gpt-5-pro":{"name":"OpenAI: GPT-5 Pro","limit":{"context":128000,"output":32768},"cost":{"input":15,"output":120},"updated":"2025-01-01"},"deepseek-tng-r1t2-chimera":{"name":"DeepSeek TNG R1T2 Chimera","limit":{"context":130000,"output":163840},"cost":{"input":0.3,"output":1.2},"updated":"2025-07-02"},"claude-opus-4":{"name":"Anthropic: Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-14"},"kimi-k2-0711":{"name":"Kimi K2 (07/11)","limit":{"context":131072,"output":16384},"cost":{"input":0.5700000000000001,"output":2.3},"updated":"2025-01-01"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41},"updated":"2025-09-22"},"claude-3.5-sonnet-v2":{"name":"Anthropic: Claude 3.5 Sonnet v2","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75},"updated":"2024-10-22"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":131072,"output":40960},"cost":{"input":0.29,"output":0.59},"updated":"2025-04-28"},"kimi-k2-0905":{"name":"Kimi K2 (09/05)","limit":{"context":262144,"output":16384},"cost":{"input":0.5,"output":2,"cache_read":0.39999999999999997},"updated":"2025-09-05"},"gemini-2.5-flash":{"name":"Google Gemini 2.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.3},"updated":"2025-06-17"},"qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":41000,"output":41000},"cost":{"input":0.08,"output":0.29},"updated":"2025-06-01"},"claude-4.5-opus":{"name":"Anthropic: Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"llama-3.1-8b-instant":{"name":"Meta Llama 3.1 8B Instant","limit":{"context":131072,"output":32678},"cost":{"input":0.049999999999999996,"output":0.08},"updated":"2024-07-01"},"claude-3.7-sonnet":{"name":"Anthropic: Claude 3.7 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75},"updated":"2025-02-19"},"gpt-oss-20b":{"name":"OpenAI GPT-OSS 20b","limit":{"context":131072,"output":131072},"cost":{"input":0.049999999999999996,"output":0.19999999999999998},"updated":"2024-06-01"},"llama-4-scout":{"name":"Meta Llama 4 Scout 17B 16E","limit":{"context":131072,"output":8192},"cost":{"input":0.08,"output":0.3},"updated":"2025-01-01"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3 Coder 30B A3B Instruct","limit":{"context":262144,"output":262144},"cost":{"input":0.09999999999999999,"output":0.3},"updated":"2025-07-31"},"gemini-3-pro-preview":{"name":"Google Gemini 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.19999999999999998},"updated":"2025-11-18"},"gpt-4o-mini":{"name":"OpenAI GPT-4o-mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"claude-3-haiku-20240307":{"name":"Anthropic: Claude 3 Haiku","limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3},"updated":"2024-03-07"},"gpt-5-mini":{"name":"OpenAI GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998},"updated":"2025-01-01"},"grok-3-mini":{"name":"xAI Grok 3 Mini","limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":0.5,"cache_read":0.075},"updated":"2024-06-01"},"ernie-4.5-21b-a3b-thinking":{"name":"Baidu Ernie 4.5 21B A3B Thinking","limit":{"context":128000,"output":8000},"cost":{"input":0.07,"output":0.28},"updated":"2025-03-16"},"deepseek-v3":{"name":"DeepSeek V3","limit":{"context":128000,"output":8192},"cost":{"input":0.56,"output":1.68,"cache_read":0.07},"updated":"2024-12-26"},"glm-4.6":{"name":"Zai GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.44999999999999996,"output":1.5},"updated":"2024-07-18"},"deepseek-v3.1-terminus":{"name":"DeepSeek V3.1 Terminus","limit":{"context":128000,"output":16384},"cost":{"input":0.27,"output":1,"cache_read":0.21600000000000003},"updated":"2025-09-22"},"grok-4-fast-non-reasoning":{"name":"xAI Grok 4 Fast Non-Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996},"updated":"2025-09-19"},"qwen3-235b-a22b-thinking":{"name":"Qwen3 235B A22B Thinking","limit":{"context":262144,"output":81920},"cost":{"input":0.3,"output":2.9000000000000004},"updated":"2025-07-25"},"claude-haiku-4-5-20251001":{"name":"Anthropic: Claude 4.5 Haiku (20251001)","limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25},"updated":"2025-10-01"},"grok-4":{"name":"xAI Grok 4","limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2024-07-09"},"llama-3.3-70b-versatile":{"name":"Meta Llama 3.3 70B Versatile","limit":{"context":131072,"output":32678},"cost":{"input":0.59,"output":0.7899999999999999},"updated":"2024-12-06"},"claude-4.5-haiku":{"name":"Anthropic: Claude 4.5 Haiku","limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25},"updated":"2025-10-01"},"o3-mini":{"name":"OpenAI o3 Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2023-10-01"},"o3-pro":{"name":"OpenAI o3 Pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2024-06-01"},"claude-opus-4-1":{"name":"Anthropic: Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gpt-oss-120b":{"name":"OpenAI GPT-OSS 120b","limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16},"updated":"2024-06-01"},"gemini-2.5-pro":{"name":"Google Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.3125,"cache_write":1.25},"updated":"2025-06-17"},"gpt-5.1-codex-mini":{"name":"OpenAI: GPT-5.1 Codex Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998},"updated":"2025-01-01"},"gpt-5.1":{"name":"OpenAI GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2025-01-01"},"deepseek-reasoner":{"name":"DeepSeek Reasoner","limit":{"context":128000,"output":64000},"cost":{"input":0.56,"output":1.68,"cache_read":0.07},"updated":"2025-01-20"},"gpt-5.1-codex":{"name":"OpenAI: GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003},"updated":"2025-01-01"},"llama-3.1-8b-instruct":{"name":"Meta Llama 3.1 8B Instruct","limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.049999999999999996},"updated":"2024-07-23"},"grok-code-fast-1":{"name":"xAI Grok Code Fast 1","limit":{"context":256000,"output":10000},"cost":{"input":0.19999999999999998,"output":1.5,"cache_read":0.02},"updated":"2024-08-25"},"claude-3.5-haiku":{"name":"Anthropic: Claude 3.5 Haiku","limit":{"context":200000,"output":8192},"cost":{"input":0.7999999999999999,"output":4,"cache_read":0.08,"cache_write":1},"updated":"2024-10-22"},"gpt-4.1":{"name":"OpenAI GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"gemma2-9b-it":{"name":"Google Gemma 2","limit":{"context":8192,"output":8192},"cost":{"input":0.01,"output":0.03},"updated":"2024-06-25"},"gemma-3-12b-it":{"name":"Google Gemma 3 12B","limit":{"context":131072,"output":8192},"cost":{"input":0.049999999999999996,"output":0.09999999999999999},"updated":"2024-12-01"},"deepseek-r1-distill-llama-70b":{"name":"DeepSeek R1 Distill Llama 70B","limit":{"context":128000,"output":4096},"cost":{"input":0.03,"output":0.13},"updated":"2025-01-20"},"sonar":{"name":"Perplexity Sonar","limit":{"context":127000,"output":4096},"cost":{"input":1,"output":1},"updated":"2025-01-27"},"mistral-small":{"name":"Mistral Small 3.2","limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.2},"updated":"2025-06-20"},"o3":{"name":"OpenAI o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2024-06-01"},"hermes-2-pro-llama-3-8b":{"name":"Hermes 2 Pro Llama 3 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.14,"output":0.14},"updated":"2024-05-27"},"qwen2.5-coder-7b-fast":{"name":"Qwen2.5 Coder 7B fast","limit":{"context":32000,"output":8192},"cost":{"input":0.03,"output":0.09},"updated":"2024-09-15"},"grok-4-1-fast-reasoning":{"name":"xAI Grok 4.1 Fast Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996},"updated":"2025-11-17"}}},"watsonx":{"name":"watsonx.ai","npm":"watsonx-ai-provider","models":{"meta-llama/llama-3-3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":4096},"cost":{"input":0.7526,"output":0.7526},"updated":"2024-12-06"},"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama 4 Maverick 17B 128E Instruct FP8","limit":{"context":131072,"output":8192},"cost":{"input":0.371,"output":1.484},"updated":"2025-04-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.159,"output":0.636},"updated":"2025-08-05"},"ibm/granite-4-h-small":{"name":"Granite-4.0-H-Small","limit":{"context":131072,"output":131072},"cost":{"input":0.0636,"output":0.265},"updated":"2025-10-02"},"mistralai/mistral-small-3-1-24b-instruct-2503":{"name":"Mistral Small 3.1 24B","limit":{"context":131072,"output":16384},"cost":{"input":0.106,"output":0.318},"updated":"2025-03-17"}}},"unorouter":{"name":"UnoRouter","npm":"@ai-sdk/openai-compatible","models":{"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":0.425,"output":2.125},"updated":"2026-05-28"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":0.1875,"output":1.125},"updated":"2026-04-23"},"qwen3.5-397b-a17b:free":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-02-15"},"step-3.7-flash:free":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.8999,"output":1.7999},"updated":"2026-04-24"},"gpt-5.4:free":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-03-05"},"glm-5.2:free":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"deepseek-v4-flash:free":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.6001,"output":5.0288},"updated":"2026-06-13"},"deepseek-v4-pro:free":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":1.8,"output":10.8},"updated":"2026-03-05"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.05,"output":8.4},"updated":"2025-12-11"},"glm-4.5-flash:free":{"name":"GLM-4.5-Flash","limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0},"updated":"2025-07-28"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":1.2675,"output":5.3368},"updated":"2026-04-21"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1.2,"output":6},"updated":"2025-10-15"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":1.44,"output":7.2},"updated":"2026-06-30"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.0625,"output":0.125},"updated":"2026-04-24"},"nemotron-3-ultra-550b-a55b:free":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.1857,"output":1.1142},"updated":"2026-05-19"},"minimax-m2.7:free":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.819,"output":3.276},"updated":"2026-03-18"},"gemma-4-31b-it:free":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"gpt-5.5:free":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-04-23"}}},"qiniu-ai":{"name":"Qiniu","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B","limit":{"context":256000,"output":64000},"updated":"2026-02-22"},"deepseek-v3-0324":{"name":"DeepSeek-V3-0324","limit":{"context":128000,"output":16000},"updated":"2025-08-05"},"doubao-seed-1.6":{"name":"Doubao-Seed 1.6","limit":{"context":256000,"output":32000},"updated":"2025-08-15"},"claude-4.0-opus":{"name":"Claude 4.0 Opus","limit":{"context":200000,"output":32000},"updated":"2025-08-05"},"qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262000,"output":4096},"updated":"2025-08-14"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235b A22B Instruct 2507","limit":{"context":262144,"output":64000},"updated":"2025-08-12"},"qwen3-vl-30b-a3b-thinking":{"name":"Qwen3-Vl 30b A3b Thinking","limit":{"context":128000,"output":32000},"updated":"2026-02-09"},"claude-4.5-sonnet":{"name":"Claude 4.5 Sonnet","limit":{"context":200000,"output":64000},"updated":"2025-09-30"},"claude-3.5-sonnet":{"name":"Claude 3.5 Sonnet","limit":{"context":200000,"output":8200},"updated":"2025-09-09"},"qwen3-30b-a3b-instruct-2507":{"name":"Qwen3 30b A3b Instruct 2507","limit":{"context":128000,"output":32000},"updated":"2026-02-04"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct","limit":{"context":131072,"output":32768},"updated":"2025-09-12"},"deepseek-r1-0528":{"name":"DeepSeek-R1-0528","limit":{"context":128000,"output":32000},"updated":"2025-08-05"},"qwen3-next-80b-a3b-thinking":{"name":"Qwen3 Next 80B A3B Thinking","limit":{"context":131072,"output":32768},"updated":"2025-09-12"},"doubao-seed-1.6-thinking":{"name":"Doubao-Seed 1.6 Thinking","limit":{"context":256000,"output":32000},"updated":"2025-08-15"},"doubao-seed-2.0-mini":{"name":"Doubao Seed 2.0 Mini","limit":{"context":256000,"output":32000},"updated":"2026-02-14"},"deepseek-v3.1":{"name":"DeepSeek-V3.1","limit":{"context":128000,"output":32000},"updated":"2025-08-19"},"gemini-3.0-pro-preview":{"name":"Gemini 3.0 Pro Preview","limit":{"context":1000000,"output":64000},"updated":"2025-11-19"},"qwen3-235b-a22b":{"name":"Qwen 3 235B A22B","limit":{"context":128000,"output":32000},"updated":"2025-08-05"},"doubao-seed-1.6-flash":{"name":"Doubao-Seed 1.6 Flash","limit":{"context":256000,"output":32000},"updated":"2025-08-15"},"qwen2.5-vl-7b-instruct":{"name":"Qwen 2.5 VL 7B Instruct","limit":{"context":128000,"output":8192},"updated":"2025-08-05"},"qwen2.5-vl-72b-instruct":{"name":"Qwen 2.5 VL 72B Instruct","limit":{"context":128000,"output":8192},"updated":"2025-08-05"},"qwen3-30b-a3b-thinking-2507":{"name":"Qwen3 30b A3b Thinking 2507","limit":{"context":126000,"output":32000},"updated":"2026-02-04"},"qwen3-max-preview":{"name":"Qwen3 Max Preview","limit":{"context":256000,"output":64000},"updated":"2025-09-06"},"gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash Lite","limit":{"context":1048576,"output":64000},"updated":"2025-08-05"},"qwen-max-2025-01-25":{"name":"Qwen2.5-Max-2025-01-25","limit":{"context":128000,"output":4096},"updated":"2025-08-05"},"doubao-1.5-vision-pro":{"name":"Doubao 1.5 Vision Pro","limit":{"context":128000,"output":16000},"updated":"2025-08-05"},"qwen-vl-max-2025-01-25":{"name":"Qwen VL-MAX-2025-01-25","limit":{"context":128000,"output":4096},"updated":"2025-08-05"},"doubao-seed-2.0-code":{"name":"Doubao Seed 2.0 Code","limit":{"context":256000,"output":128000},"updated":"2026-02-14"},"claude-4.0-sonnet":{"name":"Claude 4.0 Sonnet","limit":{"context":200000,"output":64000},"updated":"2025-08-05"},"kimi-k2":{"name":"Kimi K2","limit":{"context":128000,"output":128000},"updated":"2025-08-05"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":40000,"output":4096},"updated":"2025-08-05"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":64000},"updated":"2025-08-05"},"qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":40000,"output":4096},"updated":"2025-08-05"},"deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":128000,"output":32000},"updated":"2025-08-05"},"claude-4.5-opus":{"name":"Claude 4.5 Opus","limit":{"context":200000,"output":200000},"updated":"2025-11-25"},"claude-3.7-sonnet":{"name":"Claude 3.7 Sonnet","limit":{"context":200000,"output":128000},"updated":"2025-08-05"},"gpt-oss-20b":{"name":"gpt-oss-20b","limit":{"context":128000,"output":4096},"updated":"2025-08-06"},"doubao-1.5-thinking-pro":{"name":"Doubao 1.5 Thinking Pro","limit":{"context":128000,"output":16000},"updated":"2025-08-05"},"doubao-1.5-pro-32k":{"name":"Doubao 1.5 Pro 32k","limit":{"context":128000,"output":12000},"updated":"2025-08-05"},"qwen-turbo":{"name":"Qwen-Turbo","limit":{"context":1000000,"output":4096},"updated":"2025-08-05"},"deepseek-v3":{"name":"DeepSeek-V3","limit":{"context":128000,"output":16000},"updated":"2025-08-13"},"kling-v2-6":{"name":"Kling-V2 6","limit":{"context":99999999,"output":99999999},"updated":"2026-01-13"},"mimo-v2-flash":{"name":"Mimo-V2-Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2026-02-04"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"updated":"2025-09-24"},"gemini-3.0-pro-image-preview":{"name":"Gemini 3.0 Pro Image Preview","limit":{"context":32768,"output":8192},"updated":"2025-11-20"},"claude-4.5-haiku":{"name":"Claude 4.5 Haiku","limit":{"context":200000,"output":64000},"updated":"2025-10-16"},"gemini-2.0-flash-lite":{"name":"Gemini 2.0 Flash Lite","limit":{"context":1048576,"output":8192},"updated":"2025-08-05"},"gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":128000,"output":4096},"updated":"2025-08-06"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"updated":"2025-08-05"},"glm-4.5-air":{"name":"GLM 4.5 Air","limit":{"context":131000,"output":4096},"updated":"2025-08-05"},"claude-3.5-haiku":{"name":"Claude 3.5 Haiku","limit":{"context":200000,"output":8192},"updated":"2025-08-26"},"qwen3-235b-a22b-thinking-2507":{"name":"Qwen3 235B A22B Thinking 2507","limit":{"context":262144,"output":4096},"updated":"2025-08-12"},"doubao-seed-2.0-pro":{"name":"Doubao Seed 2.0 Pro","limit":{"context":256000,"output":128000},"updated":"2026-02-14"},"gemini-2.0-flash":{"name":"Gemini 2.0 Flash","limit":{"context":1048576,"output":8192},"updated":"2025-08-05"},"claude-4.1-opus":{"name":"Claude 4.1 Opus","limit":{"context":200000,"output":32000},"updated":"2025-08-06"},"gemini-3.0-flash-preview":{"name":"Gemini 3.0 Flash Preview","limit":{"context":1000000,"output":64000},"updated":"2025-12-18"},"MiniMax-M1":{"name":"MiniMax M1","limit":{"context":1000000,"output":80000},"updated":"2025-08-05"},"doubao-seed-2.0-lite":{"name":"Doubao Seed 2.0 Lite","limit":{"context":256000,"output":32000},"updated":"2026-02-14"},"gemini-2.5-flash-image":{"name":"Gemini 2.5 Flash Image","limit":{"context":32768,"output":8192},"updated":"2025-10-22"},"glm-4.5":{"name":"GLM 4.5","limit":{"context":131072,"output":98304},"updated":"2025-08-05"},"minimax/minimax-m2":{"name":"Minimax/Minimax-M2","limit":{"context":200000,"output":128000},"updated":"2025-10-28"},"minimax/minimax-m2.1":{"name":"Minimax/Minimax-M2.1","limit":{"context":204800,"output":128000},"updated":"2025-12-23"},"minimax/minimax-m2.5-highspeed":{"name":"Minimax/Minimax-M2.5 Highspeed","limit":{"context":204800,"output":128000},"updated":"2026-02-14"},"minimax/minimax-m2.5":{"name":"Minimax/Minimax-M2.5","limit":{"context":204800,"output":128000},"updated":"2026-02-12"},"stepfun/step-3.5-flash":{"name":"Stepfun/Step-3.5 Flash","limit":{"context":64000,"output":4096},"updated":"2026-02-02"},"openai/gpt-5":{"name":"OpenAI/GPT-5","limit":{"context":400000,"output":128000},"updated":"2025-09-19"},"openai/gpt-5.2":{"name":"OpenAI/GPT-5.2","limit":{"context":400000,"output":128000},"updated":"2025-12-11"},"meituan/longcat-flash-lite":{"name":"Meituan/Longcat-Flash-Lite","limit":{"context":256000,"output":320000},"updated":"2026-02-06"},"meituan/longcat-flash-chat":{"name":"Meituan/Longcat-Flash-Chat","limit":{"context":131072,"output":131072},"updated":"2025-11-05"},"x-ai/grok-4.1-fast-reasoning":{"name":"X-Ai/Grok 4.1 Fast Reasoning","limit":{"context":20000000,"output":2000000},"updated":"2025-12-19"},"x-ai/grok-4-fast-reasoning":{"name":"X-Ai/Grok-4-Fast-Reasoning","limit":{"context":2000000,"output":2000000},"updated":"2025-12-18"},"x-ai/grok-4.1-fast-non-reasoning":{"name":"X-Ai/Grok 4.1 Fast Non Reasoning","limit":{"context":2000000,"output":2000000},"updated":"2025-12-19"},"x-ai/grok-4.1-fast":{"name":"x-AI/Grok-4.1-Fast","limit":{"context":2000000,"output":2000000},"updated":"2025-11-20"},"x-ai/grok-4-fast-non-reasoning":{"name":"X-Ai/Grok-4-Fast-Non-Reasoning","limit":{"context":2000000,"output":2000000},"updated":"2025-12-18"},"x-ai/grok-4-fast":{"name":"x-AI/Grok-4-Fast","limit":{"context":2000000,"output":2000000},"updated":"2025-09-20"},"x-ai/grok-code-fast-1":{"name":"x-AI/Grok-Code-Fast 1","limit":{"context":256000,"output":10000},"updated":"2025-09-02"},"deepseek/deepseek-v3.2-exp-thinking":{"name":"DeepSeek/DeepSeek-V3.2-Exp-Thinking","limit":{"context":128000,"output":32000},"updated":"2025-09-29"},"deepseek/deepseek-v3.2-251201":{"name":"Deepseek/DeepSeek-V3.2","limit":{"context":128000,"output":32000},"updated":"2025-12-01"},"deepseek/deepseek-math-v2":{"name":"Deepseek/Deepseek-Math-V2","limit":{"context":160000,"output":160000},"updated":"2025-12-04"},"deepseek/deepseek-v3.1-terminus":{"name":"DeepSeek/DeepSeek-V3.1-Terminus","limit":{"context":128000,"output":32000},"updated":"2025-09-22"},"deepseek/deepseek-v3.1-terminus-thinking":{"name":"DeepSeek/DeepSeek-V3.1-Terminus-Thinking","limit":{"context":128000,"output":32000},"updated":"2025-09-22"},"deepseek/deepseek-v3.2-exp":{"name":"DeepSeek/DeepSeek-V3.2-Exp","limit":{"context":128000,"output":32000},"updated":"2025-09-29"},"stepfun-ai/gelab-zero-4b-preview":{"name":"Stepfun-Ai/Gelab Zero 4b Preview","limit":{"context":8192,"output":4096},"updated":"2025-12-23"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":256000,"output":100000},"updated":"2025-11-07"},"moonshotai/kimi-k2.5":{"name":"Moonshotai/Kimi-K2.5","limit":{"context":256000,"output":256000},"updated":"2026-01-28"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 0905","limit":{"context":256000,"output":100000},"updated":"2025-09-08"},"xiaomi/mimo-v2-flash":{"name":"Xiaomi/Mimo-V2-Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2026-02-04"},"z-ai/glm-4.7":{"name":"Z-Ai/GLM 4.7","limit":{"context":200000,"output":200000},"updated":"2025-12-23"},"z-ai/glm-4.6":{"name":"Z-AI/GLM 4.6","limit":{"context":200000,"output":200000},"updated":"2025-10-11"},"z-ai/autoglm-phone-9b":{"name":"Z-Ai/Autoglm Phone 9b","limit":{"context":12800,"output":4096},"updated":"2025-12-23"},"z-ai/glm-5":{"name":"Z-Ai/GLM 5","limit":{"context":200000,"output":128000},"updated":"2026-02-12"}}},"blueclaw":{"name":"Blue Claw","npm":"@ai-sdk/openai-compatible","models":{"Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":131072,"output":32768},"updated":"2026-08-14"}}},"jiekou":{"name":"Jiekou.AI","npm":"@ai-sdk/openai-compatible","models":{"claude-opus-4-20250514":{"name":"claude-opus-4-20250514","limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5},"updated":"2026-01"},"claude-opus-4-1-20250805":{"name":"claude-opus-4-1-20250805","limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5},"updated":"2026-01"},"gpt-5-chat-latest":{"name":"gpt-5-chat-latest","limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"gemini-2.5-flash-lite-preview-09-2025":{"name":"gemini-2.5-flash-lite-preview-09-2025","limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.36},"updated":"2026-01"},"claude-sonnet-4-5-20250929":{"name":"claude-sonnet-4-5-20250929","limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5},"updated":"2026-01"},"grok-4-1-fast-non-reasoning":{"name":"grok-4-1-fast-non-reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45},"updated":"2026-01"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4},"updated":"2026-01"},"gemini-2.5-pro-preview-06-05":{"name":"gemini-2.5-pro-preview-06-05","limit":{"context":1048576,"output":200000},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"gpt-5-codex":{"name":"gpt-5-codex","limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"claude-sonnet-4-20250514":{"name":"claude-sonnet-4-20250514","limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5},"updated":"2026-01"},"gpt-5-nano":{"name":"gpt-5-nano","limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36},"updated":"2026-01"},"gemini-3-flash-preview":{"name":"gemini-3-flash-preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2026-01"},"grok-4-fast-reasoning":{"name":"grok-4-fast-reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45},"updated":"2026-01"},"gemini-2.5-flash-lite":{"name":"gemini-2.5-flash-lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36},"updated":"2026-01"},"gpt-5.2-pro":{"name":"gpt-5.2-pro","limit":{"context":400000,"output":128000},"cost":{"input":18.9,"output":151.2},"updated":"2026-01"},"gpt-5-pro":{"name":"gpt-5-pro","limit":{"context":400000,"output":272000},"cost":{"input":13.5,"output":108},"updated":"2026-01"},"gpt-5.1-codex-max":{"name":"gpt-5.1-codex-max","limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"gemini-2.5-flash":{"name":"gemini-2.5-flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.27,"output":2.25},"updated":"2026-01"},"gpt-5.2":{"name":"gpt-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.575,"output":12.6},"updated":"2026-01"},"gemini-3-pro-preview":{"name":"gemini-3-pro-preview","limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":10.8},"updated":"2026-01"},"gpt-5-mini":{"name":"gpt-5-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8},"updated":"2026-01"},"grok-4-0709":{"name":"grok-4-0709","limit":{"context":256000,"output":8192},"cost":{"input":2.7,"output":13.5},"updated":"2026-01"},"claude-opus-4-6":{"name":"claude-opus-4-6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-02"},"grok-4-fast-non-reasoning":{"name":"grok-4-fast-non-reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45},"updated":"2026-01"},"claude-haiku-4-5-20251001":{"name":"claude-haiku-4-5-20251001","limit":{"context":20000,"output":64000},"cost":{"input":0.9,"output":4.5},"updated":"2026-01"},"o3-mini":{"name":"o3-mini","limit":{"context":131072,"output":131072},"cost":{"input":1.1,"output":4.4},"updated":"2026-01"},"gemini-2.5-pro":{"name":"gemini-2.5-pro","limit":{"context":1048576,"output":65535},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"gpt-5.1-codex-mini":{"name":"gpt-5.1-codex-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8},"updated":"2026-01"},"gpt-5.1":{"name":"gpt-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9},"updated":"2026-02"},"gpt-5.1-codex":{"name":"gpt-5.1-codex","limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9},"updated":"2026-01"},"grok-code-fast-1":{"name":"grok-code-fast-1","limit":{"context":256000,"output":256000},"cost":{"input":0.18,"output":1.35},"updated":"2026-01"},"claude-opus-4-5-20251101":{"name":"claude-opus-4-5-20251101","limit":{"context":200000,"output":65536},"cost":{"input":4.5,"output":22.5},"updated":"2026-01"},"gpt-5.2-codex":{"name":"gpt-5.2-codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-01"},"o3":{"name":"o3","limit":{"context":131072,"output":131072},"cost":{"input":10,"output":40},"updated":"2026-01"},"grok-4-1-fast-reasoning":{"name":"grok-4-1-fast-reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45},"updated":"2026-01"},"gemini-2.5-flash-lite-preview-06-17":{"name":"gemini-2.5-flash-lite-preview-06-17","limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36},"updated":"2026-01"},"gemini-2.5-flash-preview-05-20":{"name":"gemini-2.5-flash-preview-05-20","limit":{"context":1048576,"output":200000},"cost":{"input":0.135,"output":3.15},"updated":"2026-01"},"minimax/minimax-m2.1":{"name":"Minimax M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-01"},"zai-org/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2},"updated":"2026-01"},"zai-org/glm-4.5v":{"name":"GLM 4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8},"updated":"2026-01"},"zai-org/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4},"updated":"2026-01"},"zai-org/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2},"updated":"2026-01"},"xiaomimimo/mimo-v2-flash":{"name":"XiaomiMiMo/MiMo-V2-Flash","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01"},"baidu/ernie-4.5-300b-a47b-paddle":{"name":"ERNIE 4.5 300B A47B","limit":{"context":123000,"output":12000},"cost":{"input":0.28,"output":1.1},"updated":"2026-01"},"baidu/ernie-4.5-vl-424b-a47b":{"name":"ERNIE 4.5 VL 424B A47B","limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25},"updated":"2026-01"},"deepseek/deepseek-v3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":163840},"cost":{"input":0.28,"output":1.14},"updated":"2026-01"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5},"updated":"2026-01"},"deepseek/deepseek-v3.1":{"name":"DeepSeek V3.1","limit":{"context":163840,"output":32768},"cost":{"input":0.27,"output":1},"updated":"2026-01"},"minimaxai/minimax-m1-80k":{"name":"MiniMax M1","limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2},"updated":"2026-01"},"moonshotai/kimi-k2-instruct":{"name":"Kimi K2 Instruct","limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3},"updated":"2026-01"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 0905","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5},"updated":"2026-01"},"qwen/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.2},"updated":"2026-01"},"qwen/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":131072,"output":16384},"cost":{"input":0.15,"output":0.8},"updated":"2026-01"},"qwen/qwen3-32b-fp8":{"name":"Qwen3 32B","limit":{"context":40960,"output":20000},"cost":{"input":0.1,"output":0.45},"updated":"2026-01"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct","limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5},"updated":"2026-01"},"qwen/qwen3-coder-next":{"name":"qwen/qwen3-coder-next","limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5},"updated":"2026-02"},"qwen/qwen3-next-80b-a3b-thinking":{"name":"Qwen3 Next 80B A3B Thinking","limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5},"updated":"2026-01"},"qwen/qwen3-235b-a22b-fp8":{"name":"Qwen3 235B A22B","limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8},"updated":"2026-01"},"qwen/qwen3-30b-a3b-fp8":{"name":"Qwen3 30B A3B","limit":{"context":40960,"output":20000},"cost":{"input":0.09,"output":0.45},"updated":"2026-01"},"qwen/qwen3-235b-a22b-thinking-2507":{"name":"Qwen3 235B A22b Thinking 2507","limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":3},"updated":"2026-01"}}},"huggingface":{"name":"Hugging Face","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":4096},"cost":{"input":0.59,"output":0.79},"updated":"2024-12-06"},"meta-llama/Llama-3.1-8B-Instruct":{"name":"Llama-3.1-8B-Instruct","limit":{"context":131072,"output":4096},"cost":{"input":0.06,"output":0.06},"updated":"2024-07-23"},"zai-org/GLM-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2},"updated":"2025-09-30"},"zai-org/AutoGLM-Phone-9B-Multilingual":{"name":"AutoGLM Phone 9B Multilingual","limit":{"context":65536,"output":65536},"cost":{"input":0.035,"output":0.138},"updated":"2025-12-10"},"zai-org/GLM-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2},"updated":"2025-07-28"},"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-04-03"},"zai-org/GLM-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-11"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-06-13"},"zai-org/GLM-4.5-Air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85},"updated":"2025-07-28"},"zai-org/GLM-4.5V":{"name":"GLM-4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8},"updated":"2025-08-11"},"zai-org/GLM-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"zai-org/GLM-4.7-Flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0},"updated":"2025-08-08"},"zai-org/GLM-4.6V-Flash":{"name":"GLM-4.6V-Flash","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9},"updated":"2025-12-08"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5},"updated":"2026-08-26"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5},"updated":"2025-08-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":0.69},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"MiniMaxAI/MiniMax-M1-80k":{"name":"MiniMax M1 80K","limit":{"context":1000000,"output":80000},"cost":{"input":0.55,"output":2.2},"updated":"2025-06-17"},"MiniMaxAI/MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-12-23"},"MiniMaxAI/MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"XiaomiMiMo/MiMo-V2.5":{"name":"MiMo-V2.5","limit":{"context":262144,"output":131072},"cost":{"input":0.4,"output":2},"updated":"2026-04-22"},"XiaomiMiMo/MiMo-V2.5-Pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3},"updated":"2026-04-22"},"XiaomiMiMo/MiMo-V2-Flash":{"name":"MiMo-V2-Flash","limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.3},"updated":"2025-12-16"},"stepfun-ai/Step-3.7-Flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15},"updated":"2026-05-29"},"stepfun-ai/Step-3.5-Flash":{"name":"Step 3.5 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-13"},"Qwen/Qwen3-235B-A22B":{"name":"Qwen3 235B-A22B","limit":{"context":40960,"output":16384},"cost":{"input":0.2,"output":0.8},"updated":"2025-04"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"name":"Qwen3-Next-80B-A3B-Instruct","limit":{"context":262144,"output":66536},"cost":{"input":0.25,"output":1},"updated":"2025-09-11"},"Qwen/Qwen3-VL-235B-A22B-Thinking":{"name":"Qwen3 VL 235B A22B Thinking","limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"updated":"2025-09-23"},"Qwen/Qwen3-32B":{"name":"Qwen3 32B","limit":{"context":131072,"output":16384},"cost":{"input":0.29,"output":0.59},"updated":"2025-04"},"Qwen/Qwen3.5-27B":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3},"updated":"2026-08-14"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.95},"updated":"2026-04-17"},"Qwen/Qwen3-Embedding-4B":{"name":"Qwen 3 Embedding 4B","limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0},"updated":"2025-01-01"},"Qwen/Qwen3.8-2.4T-A95B":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":6.25},"updated":"2026-08-12"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.47,"output":3.19},"updated":"2026-04-22"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7},"updated":"2025-10-04"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"name":"Qwen3-Coder-480B-A35B-Instruct","limit":{"context":262144,"output":66536},"cost":{"input":2,"output":2},"updated":"2025-07-23"},"Qwen/Qwen2.5-Coder-32B-Instruct":{"name":"Qwen2.5-Coder-32B-Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.06,"output":0.2},"updated":"2024-11-12"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.855,"output":2.565},"updated":"2025-07-21"},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5},"updated":"2025-09-23"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen3.5-397B-A17B","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-01"},"Qwen/Qwen3.5-122B-A10B":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"Qwen/Qwen3.5-9B":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25},"updated":"2026-02-23"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"name":"Qwen3-235B-A22B-Thinking-2507","limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":3},"updated":"2025-07-25"},"Qwen/Qwen3-Embedding-8B":{"name":"Qwen 3 Embedding 8B","limit":{"context":32000,"output":4096},"cost":{"input":0.01,"output":0},"updated":"2025-01-01"},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.07,"output":0.26},"updated":"2025-04"},"Qwen/Qwen3-Next-80B-A3B-Thinking":{"name":"Qwen3-Next-80B-A3B-Thinking","limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":2},"updated":"2025-09-11"},"Qwen/Qwen3-Coder-Next":{"name":"Qwen3-Coder-Next","limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5},"updated":"2026-02-03"},"Qwen/Qwen3-30B-A3B":{"name":"Qwen3 30B A3B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"updated":"2025-04-28"},"Qwen/Qwen3.5-35B-A3B":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"moonshotai/Kimi-K2-Instruct":{"name":"Kimi-K2-Instruct","limit":{"context":131072,"output":16384},"cost":{"input":1,"output":3},"updated":"2025-07-14"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-06-12"},"moonshotai/Kimi-K2.5":{"name":"Kimi-K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01-01"},"moonshotai/Kimi-K2.6":{"name":"Kimi-K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-20"},"moonshotai/Kimi-K2-Thinking":{"name":"Kimi-K2-Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"moonshotai/Kimi-K2-Instruct-0905":{"name":"Kimi-K2-Instruct-0905","limit":{"context":262144,"output":16384},"cost":{"input":1,"output":3},"updated":"2025-09-04"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"updated":"2025-03-12"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"updated":"2025-03-12"},"google/gemma-4-26B-A4B-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"updated":"2025-03-12"},"tencent/Hy4-preview":{"name":"Hy4 preview","limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501},"updated":"2026-08-28"},"tencent/Hy3":{"name":"Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.14,"output":0.58},"updated":"2026-07-06"},"thinkingmachines/Inkling":{"name":"Inkling","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05},"updated":"2026-07-15"},"thinkingmachines/Inkling-Small":{"name":"Inkling Small","limit":{"context":524288,"output":1048576},"cost":{"input":0.5,"output":1.2},"updated":"2026-07-30"},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32},"updated":"2026-09-01"},"deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":163840},"cost":{"input":0.27,"output":1.12},"updated":"2025-03-24"},"deepseek-ai/DeepSeek-V3":{"name":"DeepSeek-V3","limit":{"context":64000,"output":8192},"cost":{"input":0.4,"output":1.3},"updated":"2024-12-26"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V3.2":{"name":"DeepSeek-V3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.4},"updated":"2025-12-01"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek-R1-0528","limit":{"context":163840,"output":163840},"cost":{"input":3,"output":5},"updated":"2025-05-28"},"deepseek-ai/DeepSeek-R1":{"name":"DeepSeek-R1","limit":{"context":64000,"output":32768},"cost":{"input":0.7,"output":2.5},"updated":"2025-05-29"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96},"updated":"2026-08-22"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek-V3.1","limit":{"context":131072,"output":8192},"cost":{"input":0.27,"output":1},"updated":"2025-08-21"}}},"vispark":{"name":"Vispark","npm":"@ai-sdk/openai-compatible","models":{"vispark/vision-large":{"name":"Vision Large","limit":{"context":1000000,"output":65536},"cost":{"input":7.37,"output":22.11},"updated":"2026-09"},"vispark/vision-medium":{"name":"Vision Medium","limit":{"context":1000000,"output":65536},"cost":{"input":4.21,"output":12.63},"updated":"2026-09"},"vispark/vision-small":{"name":"Vision Small","limit":{"context":1000000,"output":65536},"cost":{"input":1.05,"output":3.16},"updated":"2026-09"}}},"modelscope":{"name":"ModelScope","npm":"@ai-sdk/openai-compatible","models":{"ZhipuAI/GLM-4.6":{"name":"GLM-4.6","limit":{"context":202752,"output":98304},"cost":{"input":0,"output":0},"updated":"2025-09-30"},"ZhipuAI/GLM-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0},"updated":"2025-07-28"},"Qwen/Qwen3-30B-A3B-Thinking-2507":{"name":"Qwen3 30B A3B Thinking 2507","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-07-30"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0},"updated":"2025-07-21"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"name":"Qwen3-235B-A22B-Thinking-2507","limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0},"updated":"2025-07-25"},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"name":"Qwen3 Coder 30B A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-07-31"},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"name":"Qwen3 30B A3B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-07-30"}}},"bee":{"name":"Bee by HEOSSI","npm":"@ai-sdk/openai-compatible","models":{"bee-hive":{"name":"Bee Hive 1.0","limit":{"context":262144,"output":32768},"cost":{"input":5,"output":20,"cache_read":0.5,"cache_write":6},"updated":"2026-09-28"},"bee-swarm":{"name":"Bee Swarm 1.0","limit":{"context":1000000,"output":64000},"cost":{"input":25,"output":150,"cache_read":2.5,"cache_write":30},"updated":"2026-09-28"},"bee-buzz":{"name":"Bee Buzz 1.0","limit":{"context":262144,"output":24576},"cost":{"input":2.5,"output":10,"cache_read":0.25,"cache_write":3},"updated":"2026-09-28"},"bee-comb":{"name":"Bee Comb 2.0","limit":{"context":262144,"output":16384},"cost":{"input":1.25,"output":5,"cache_read":0.125,"cache_write":1.5},"updated":"2026-09-28"},"bee-cell":{"name":"Bee Cell 1.0","limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.36},"updated":"2026-09-28"},"bee-brood":{"name":"Bee Brood 1.0","limit":{"context":262144,"output":16384},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.72},"updated":"2026-09-28"}}},"umans-ai":{"name":"Umans AI","npm":"@ai-sdk/openai-compatible","models":{"umans-deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393215},"cost":{"input":0.15,"output":0.6,"cache_read":0.028},"updated":"2026-09-10"},"umans-coder":{"name":"Umans Coder","limit":{"context":1048576,"output":131071},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"umans-glm-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":131071},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"umans-flash":{"name":"Umans Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1,"cache_read":0.05},"updated":"2026-04-17"},"umans-deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":393215},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-07-31"},"umans-glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131071},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"umans-kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"}}},"vancine":{"name":"Vancine","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.4,"cache_read":0.024},"updated":"2026-08-26"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.38,"cache_read":0.013},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.12,"output":3.52,"cache_read":0.208},"updated":"2026-08-14"},"hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.67,"output":2,"cache_read":0.034},"updated":"2026-08-28"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.24,"output":0.96,"cache_read":0.0048},"updated":"2026-09-10"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.6,"output":4.8,"cache_read":0.2},"updated":"2026-08-03"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":2.4,"output":12,"cache_read":0.24},"updated":"2026-07-16"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.24,"output":0.96,"cache_read":0.048},"updated":"2026-06-01"}}},"inferx":{"name":"InferX","npm":"@ai-sdk/openai-compatible","models":{"Qwen3.6-35B-A3B-fp8-no-thinking":{"name":"Qwen3.6-35B-A3B-fp8-no-thinking","limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-17"},"gemma-4-31B-it-fp8":{"name":"Gemma 4 31B IT FP8","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"Qwen3-Coder-Next-FP8-no-thinking":{"name":"Qwen3-Coder-Next-FP8-no-thinking","limit":{"context":260000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-02-03"},"mimo-v25":{"name":"mimo-v25","limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"Qwen3.6-27B-FP8":{"name":"Qwen3.6 27B FP8","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"Ornith-1.0-35B-FP8":{"name":"Ornith-1.0-35B-FP8","limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0},"updated":"2026-06-25"},"Devstral-2-123B-Instruct-2512-int4-AutoRound":{"name":"Devstral-2-123B-Instruct-2512-int4-AutoRound","limit":{"context":128000,"output":128000},"cost":{"input":0,"output":0},"updated":"2025-12-09"},"Agents-A1":{"name":"Agents-A1","limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0},"updated":"2026-06-26"},"Qwen3-Coder-Next-FP8":{"name":"Qwen3 Coder Next FP8","limit":{"context":256144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-02-03"},"deepseek-v4-flash":{"name":"deepseek-v4-flash","limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"Qwen3-Embedding-8B":{"name":"Qwen3-Embedding-8B","limit":{"context":32768,"output":0},"cost":{"input":0,"output":0},"updated":"2025-06-05"},"Qwen3.6-35B-A3B-FP8":{"name":"Qwen3.6 35B A3B FP8","limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-17"}}},"inception":{"name":"Inception","npm":"@ai-sdk/openai-compatible","models":{"mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025},"updated":"2026-02-24"},"mercury-2.5":{"name":"Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004},"updated":"2026-09-10"},"mercury-edit-2":{"name":"Mercury Edit 2","limit":{"context":32000,"output":8192},"cost":{"input":0.25,"output":0.75,"cache_read":0.025},"updated":"2026-03-30"}}},"above":{"name":"above.dev","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.165,"output":0.55,"cache_read":0.0319},"updated":"2026-08-26"},"mimo-v2.6-pro":{"name":"MiMo V2.6 Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.5077,"output":1.0154,"cache_read":0.0042},"updated":"2026-09-22"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.726,"output":2.178,"cache_read":0.0242,"reasoning":2.178},"updated":"2026-08-22"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.165,"output":0.66,"cache_read":0.0033,"reasoning":0.66},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM 5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.54,"output":4.84,"cache_read":0.154},"updated":"2026-06-13"},"mimo-v2.6-flash":{"name":"MiMo V2.6 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.1692,"output":0.3385,"cache_read":0.0034},"updated":"2026-09-22"},"glm-5.2-fast":{"name":"GLM 5.2 Fast","limit":{"context":1000000,"output":131072},"cost":{"input":2.31,"output":7.26,"cache_read":0.231},"updated":"2026-06-13"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.165,"output":0.66,"cache_read":0.0033,"reasoning":0.66},"updated":"2026-09-10"},"qwen3.8-max":{"name":"Qwen 3.8 Max","limit":{"context":1000000,"output":32768},"cost":{"input":2.2,"output":6.6,"cache_read":0.275},"updated":"2026-08-03"},"mimo-v2.6-pro-ultraspeed":{"name":"MiMo V2.6 Pro UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":5.0769,"output":10.1538,"cache_read":0.0423},"updated":"2026-09-21"}}},"scx-ai":{"name":"SCX.ai","npm":"@ai-sdk/openai-compatible","models":{"Qwen3.8-Max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.815,"output":5.4461,"cache_read":0.17,"cache_write":2.5},"updated":"2026-08-03"},"GLM-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0.55,"output":1.784,"cache_read":0.111},"updated":"2026-06-13"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.17,"output":0.55},"updated":"2025-08-05"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05},"updated":"2026-03-18"}}},"stackit":{"name":"STACKIT","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.29},"updated":"2025-08-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131000,"output":8192},"cost":{"input":0.53,"output":0.76},"updated":"2025-08-05"},"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{"name":"Llama 3.3 70B","limit":{"context":128000,"output":4096},"cost":{"input":0.53,"output":0.76},"updated":"2024-12-05"},"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{"name":"Qwen3-VL 235B","limit":{"context":218000,"output":16384},"cost":{"input":1.76,"output":2.05},"updated":"2024-11-01"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":16384},"cost":{"input":0.53,"output":0.76},"updated":"2026-04-22"},"Qwen/Qwen3-VL-Embedding-8B":{"name":"Qwen3-VL Embedding 8B","limit":{"context":32000,"output":4096},"cost":{"input":0.09,"output":0.09},"updated":"2026-02-05"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B","limit":{"context":37000,"output":4096},"cost":{"input":0.53,"output":0.76},"updated":"2025-05-17"},"intfloat/e5-mistral-7b-instruct":{"name":"E5 Mistral 7B","limit":{"context":4096,"output":4096},"cost":{"input":0.02,"output":0.02},"updated":"2023-12-11"}}},"hpc-ai":{"name":"HPC-AI","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":196000,"output":195000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"zai-org/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai-org/glm-5.1":{"name":"GLM 5.1","limit":{"context":202000,"output":202000},"cost":{"input":0.615,"output":2.46,"cache_read":0.133},"updated":"2026-06-01"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1002000,"output":128000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-04-16"}}},"nvidia":{"name":"Nvidia","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"openai/whisper-large-v3":{"name":"Whisper Large v3","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-09-05"},"meta/llama-3.1-70b-instruct":{"name":"Llama 3.1 70b Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-07-16"},"meta/llama-3.3-70b-instruct":{"name":"Llama 3.3 70b Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-11-26"},"meta/llama-3.2-1b-instruct":{"name":"Llama 3.2 1b Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-09-18"},"meta/esm2-650m":{"name":"esm2-650m","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-03-10"},"meta/esmfold":{"name":"esmfold","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-06-12"},"meta/llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":32768,"output":32000},"cost":{"input":0,"output":0},"updated":"2024-09-18"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-10"},"meta/llama-3.2-90b-vision-instruct":{"name":"Llama-3.2-90B-Vision-Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2024-09-25"},"meta/llama-3.2-11b-vision-instruct":{"name":"Llama 3.2 11b Vision Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-09-18"},"meta/llama-4-maverick-17b-128e-instruct":{"name":"Llama 4 Maverick 17b 128e Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-01"},"meta/llama-guard-4-12b":{"name":"Llama Guard 4 12B","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-04-30"},"meta/llama-3.1-8b-instruct":{"name":"Llama 3.1 8B Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"black-forest-labs/flux_1-kontext-dev":{"name":"FLUX.1-Kontext-dev","limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0},"updated":"2025-08-12"},"black-forest-labs/flux_2-klein-4b":{"name":"FLUX.2 Klein 4B","limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0},"updated":"2026-01-31"},"black-forest-labs/flux_1-schnell":{"name":"FLUX.1-schnell","limit":{"context":77,"output":0},"cost":{"input":0,"output":0},"updated":"2026-02-04"},"black-forest-labs/flux.1-dev":{"name":"FLUX.1-dev","limit":{"context":4096,"output":0},"cost":{"input":0,"output":0},"updated":"2025-09-05"},"baai/bge-m3":{"name":"BGE M3","limit":{"context":8192,"output":1024},"cost":{"input":0,"output":0},"updated":"2026-04-30"},"nvidia/usdvalidate":{"name":"usdvalidate","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-01-08"},"nvidia/bevformer":{"name":"bevformer","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-07-20"},"nvidia/llama-3.1-nemotron-safety-guard-8b-v3":{"name":"llama-3.1-nemotron-safety-guard-8b-v3","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-10-28"},"nvidia/nemotron-mini-4b-instruct":{"name":"nemotron-mini-4b-instruct","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2024-08-26"},"nvidia/llama-3_2-nemoretriever-300m-embed-v1":{"name":"llama-3_2-nemoretriever-300m-embed-v1","limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0},"updated":"2025-07-24"},"nvidia/llama-3.1-nemotron-70b-instruct":{"name":"Llama 3.1 Nemotron 70B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-04-15"},"nvidia/llama-nemotron-rerank-vl-1b-v2":{"name":"llama-nemotron-rerank-vl-1b-v2","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-03-31"},"nvidia/usdcode":{"name":"usdcode","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-01-01"},"nvidia/nemotron-3-content-safety":{"name":"nemotron-3-content-safety","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-04-16"},"nvidia/studiovoice":{"name":"studiovoice","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-06-13"},"nvidia/llama-3.3-nemotron-super-49b-v1":{"name":"Llama 3.3 Nemotron Super 49B v1","limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-04-07"},"nvidia/llama-3.1-nemotron-nano-8b-v1":{"name":"Llama 3.1 Nemotron Nano 8B v1","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-03-18"},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{"name":"Llama 3.3 Nemotron Super 49B v1.5","limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-07-25"},"nvidia/nemotron-content-safety-reasoning-4b":{"name":"nemotron-content-safety-reasoning-4b","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"nvidia/llama-nemotron-embed-vl-1b-v2":{"name":"llama-nemotron-embed-vl-1b-v2","limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0},"updated":"2026-02-10"},"nvidia/nemotron-3.5-lightning-30b-a3b":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"nvidia/cosmos-transfer2_5-2b":{"name":"cosmos-transfer2.5-2b","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-02-26"},"nvidia/nemotron-nano-12b-v2-vl":{"name":"Nemotron Nano 12B v2 VL","limit":{"context":128000,"output":128000},"cost":{"input":0,"output":0},"updated":"2025-10-28"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.15},"updated":"2026-06-04"},"nvidia/nv-embedcode-7b-v1":{"name":"nv-embedcode-7b-v1","limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0},"updated":"2025-05-29"},"nvidia/llama-3.1-nemotron-ultra-253b-v1":{"name":"Llama 3.1 Nemotron Ultra 253B","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-04-07"},"nvidia/rerank-qa-mistral-4b":{"name":"rerank-qa-mistral-4b","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-01-17"},"nvidia/nvidia-nemotron-nano-9b-v2":{"name":"nvidia-nemotron-nano-9b-v2","limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0},"updated":"2025-08-18"},"nvidia/nemotron-voicechat":{"name":"nemotron-voicechat","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-03-16"},"nvidia/cosmos-reason2-8b":{"name":"Cosmos Reason2 8B","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-12-01"},"nvidia/cosmos-transfer1-7b":{"name":"cosmos-transfer1-7b","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-06-30"},"nvidia/nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"nvidia/synthetic-video-detector":{"name":"synthetic-video-detector","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-04-16"},"nvidia/streampetr":{"name":"streampetr","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-11-13"},"nvidia/sparsedrive":{"name":"sparsedrive","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-07-20"},"nvidia/gliner-pii":{"name":"gliner-pii","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"nvidia/llama-3.1-nemotron-nano-vl-8b-v1":{"name":"Llama 3.1 Nemotron Nano VL 8B v1","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-04-10"},"nvidia/magpie-tts-zeroshot":{"name":"magpie-tts-zeroshot","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-06-12"},"nvidia/riva-translate-4b-instruct-v1.1":{"name":"riva-translate-4b-instruct-v1_1","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-12-12"},"nvidia/nemotron-3.5-super-vl-120b-a12b":{"name":"Nemotron 3.5 Super VL 120B A12B","limit":{"context":1048576,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-10-15"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"name":"Nemotron 3 Nano Omni","limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-28"},"nvidia/cosmos-predict1-5b":{"name":"cosmos-predict1-5b","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-03-18"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"nemotron-3-nano-30b-a3b","limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0},"updated":"2024-12"},"nvidia/nv-embed-v1":{"name":"nv-embed-v1","limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0},"updated":"2025-07-22"},"nvidia/active-speaker-detection":{"name":"Active Speaker Detection","limit":{"context":0,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-04-16"},"stepfun-ai/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1048576,"output":1048576},"cost":{"input":0,"output":0},"updated":"2026-09-20"},"stepfun-ai/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-05-28"},"stepfun-ai/step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-02-02"},"poolside/laguna-xs-2.1":{"name":"Laguna XS 2.1","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-07-02"},"minimaxai/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-06-01"},"minimaxai/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-04-11"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-07-16"},"abacusai/dracarys-llama-3.1-70b-instruct":{"name":"dracarys-llama-3.1-70b-instruct","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-05-22"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-03-12"},"google/gemma-2-2b-it":{"name":"Gemma 2 2b It","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-07-16"},"google/google-paligemma":{"name":"paligemma","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2024-08-26"},"google/diffusiongemma-26b-a4b-it":{"name":"DiffusionGemma 26B A4B IT","limit":{"context":250000,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-15"},"google/gemma-4-31b-it":{"name":"Gemma-4-31B-IT","limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"google/gemma-3n-e4b-it":{"name":"Gemma 3n E4b It","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-06-03"},"google/gemma-3n-e2b-it":{"name":"Gemma 3n E2b It","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-06-12"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-03-12"},"sarvamai/sarvam-m":{"name":"sarvam-m","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-07-25"},"bytedance/seed-oss-36b-instruct":{"name":"ByteDance-Seed/Seed-OSS-36B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0,"output":0},"updated":"2025-11-25"},"upstage/solar-10.7b-instruct":{"name":"solar-10.7b-instruct","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-04-10"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5-397B-A17B","limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-02-16"},"qwen/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262144,"output":66536},"cost":{"input":0,"output":0},"updated":"2025-07-23"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-02-23"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next-80B-A3B-Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-09-05"},"qwen/qwen-image-edit":{"name":"Qwen Image Edit","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2025-08-19"},"qwen/qwen2.5-coder-32b-instruct":{"name":"Qwen2.5 Coder 32b Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-11-06"},"qwen/qwen-image":{"name":"Qwen Image","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2025-08-07"},"mistralai/mixtral-8x22b-instruct":{"name":"Mistral: Mixtral 8x22B Instruct","limit":{"context":65536,"output":13108},"cost":{"input":0,"output":0},"updated":"2024-04-17"},"mistralai/mistral-medium-3-instruct":{"name":"Mistral Medium 3","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-09-25"},"mistralai/mistral-7b-instruct-v0.3":{"name":"Mistral-7B-Instruct-v0.3","limit":{"context":65536,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-04-01"},"mistralai/mistral-nemotron":{"name":"mistral-nemotron","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-06-12"},"mistralai/magistral-small-2506":{"name":"Magistral Small 2506","limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-09-25"},"mistralai/mistral-medium-3.5-128b":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-29"},"mistralai/mistral-small-4-119b-2603":{"name":"mistral-small-4-119b-2603","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-03-16"},"mistralai/ministral-14b-instruct-2512":{"name":"Ministral 3 14B Instruct 2512","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-12-02"},"mistralai/mixtral-8x7b-instruct":{"name":"Mistral: Mixtral 8x7B Instruct","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-03-15"},"mistralai/mistral-large-3-675b-instruct-2512":{"name":"Mistral Large 3 675B Instruct 2512","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2025-12-02"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":1048576,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-07-15"},"microsoft/phi-4-multimodal-instruct":{"name":"Phi 4 Multimodal","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-07-26"},"microsoft/phi-4-mini-instruct":{"name":"Phi-4-Mini","limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-09-05"},"deepseek-ai/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-07-31"},"deepseek-ai/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"deepseek-ai/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-09-10"},"deepseek-ai/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"deepseek-ai/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-08-22"}}},"dinference":{"name":"DInference","npm":"@ai-sdk/openai-compatible","models":{"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":3.89},"updated":"2026-06-13"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":200000,"output":128000},"cost":{"input":0.45,"output":1.65},"updated":"2025-12-22"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":128000},"cost":{"input":1.25,"output":3.89},"updated":"2026-04-07"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.0675,"output":0.27},"updated":"2025-08"},"glm-5":{"name":"GLM-5","limit":{"context":200000,"output":128000},"cost":{"input":0.75,"output":2.4},"updated":"2026-02-12"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":200000,"output":32000},"cost":{"input":0.22,"output":0.88},"updated":"2026-02-12"}}},"302ai":{"name":"302.AI","npm":"@ai-sdk/openai-compatible","models":{"gpt-5.3-chat-latest":{"name":"GPT-5.3 Chat (latest)","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14},"updated":"2026-03-03"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25},"updated":"2026-08-26"},"ministral-14b-2512":{"name":"ministral-14b-2512","limit":{"context":128000,"output":128000},"cost":{"input":0.33,"output":0.33},"updated":"2025-12-16"},"gpt-4o":{"name":"gpt-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10},"updated":"2024-05-13"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-opus-5-thinking":{"name":"claude-opus-5-thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-07-24"},"gpt-5.6-terra-pro":{"name":"gpt-5.6-terra-pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12},"updated":"2026-07-09"},"qwen3-max-2025-09-23":{"name":"qwen3-max-2025-09-23","limit":{"context":258048,"output":65536},"cost":{"input":0.86,"output":3.43},"updated":"2025-09-24"},"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-02-12"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-06-09"},"qwen3-coder-480b-a35b-instruct":{"name":"qwen3-coder-480b-a35b-instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.86,"output":3.43},"updated":"2025-07-23"},"claude-opus-4-1-20250805":{"name":"claude-opus-4-1-20250805","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75},"updated":"2025-08-05"},"gpt-5":{"name":"gpt-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-08-08"},"qwen3-235b-a22b-instruct-2507":{"name":"qwen3-235b-a22b-instruct-2507","limit":{"context":128000,"output":65536},"cost":{"input":0.29,"output":1.143},"updated":"2025-07-30"},"gemini-2.5-flash-lite-preview-09-2025":{"name":"gemini-2.5-flash-lite-preview-09-2025","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4},"updated":"2025-09-26"},"claude-opus-4-7":{"name":"claude-opus-4-7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-17"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.285,"output":1.15},"updated":"2026-06-02"},"gpt-5.6-sol-pro":{"name":"gpt-5.6-sol-pro","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-07-09"},"gpt-5.4-mini":{"name":"gpt-5.4-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5},"updated":"2026-03-19"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2},"updated":"2026-07-09"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.18,"output":0.564},"updated":"2026-08-26"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"claude-sonnet-4-5-20250929":{"name":"claude-sonnet-4-5-20250929","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"updated":"2025-09-30"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5},"updated":"2026-05-07"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-08-14"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-09-01"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-04-23"},"glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2},"updated":"2026-04-02"},"gemini-3.5-flash-thinking":{"name":"gemini-3.5-flash-thinking","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"updated":"2026-05-19"},"gpt-4.1-mini":{"name":"gpt-4.1-mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6},"updated":"2025-04-14"},"claude-sonnet-4-6":{"name":"claude-sonnet-4-6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"deepseek-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-07-24"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-12-23"},"kimi-k2-thinking":{"name":"kimi-k2-thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.575,"output":2.3},"updated":"2025-09-05"},"qwen3-235b-a22b":{"name":"Qwen3-235B-A22B","limit":{"context":128000,"output":16384},"cost":{"input":0.29,"output":2.86},"updated":"2025-04-29"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.66,"output":3.3},"updated":"2026-01"},"qwen3.7-max-2026-06-08":{"name":"qwen3.7-max-2026-06-08","limit":{"context":1000000,"output":65536},"cost":{"input":1.8,"output":5.3},"updated":"2026-05-21"},"gemini-2.5-flash-nothink":{"name":"gemini-2.5-flash-nothink","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5},"updated":"2025-06-24"},"gpt-5.1-chat-latest":{"name":"gpt-5.1-chat-latest","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10},"updated":"2025-11-14"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.283,"output":1.705},"updated":"2026-04-17"},"gpt-4.1-nano":{"name":"gpt-4.1-nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4},"updated":"2025-04-14"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-06-13"},"claude-haiku-4-5":{"name":"claude-haiku-4-5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5},"updated":"2025-10-16"},"gemini-3-flash-preview":{"name":"gemini-3-flash-preview","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2025-12-18"},"glm-4.7":{"name":"glm-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142},"updated":"2025-12-22"},"gpt-5.2-chat-latest":{"name":"gpt-5.2-chat-latest","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14},"updated":"2025-12-12"},"grok-4-fast-reasoning":{"name":"grok-4-fast-reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5},"updated":"2025-09-23"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.145,"output":0.43},"updated":"2025-12-08"},"gpt-5-pro":{"name":"gpt-5-pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-08"},"grok-4.1":{"name":"grok-4.1","limit":{"context":200000,"output":64000},"cost":{"input":2,"output":10},"updated":"2025-11-18"},"deepseek-v3.2":{"name":"deepseek-v3.2","limit":{"context":128000,"output":8192},"cost":{"input":0.29,"output":0.43},"updated":"2025-12-01"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-06-12"},"gpt-5.4":{"name":"gpt-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":0},"updated":"2026-03-05"},"grok-4.20-beta-0309-reasoning":{"name":"grok-4.20-beta-0309-reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6},"updated":"2026-03-16"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-04-07"},"doubao-seed-1-6-vision-250815":{"name":"doubao-seed-1-6-vision-250815","limit":{"context":256000,"output":32000},"cost":{"input":0.114,"output":1.143},"updated":"2025-09-30"},"claude-opus-4-1-20250805-thinking":{"name":"claude-opus-4-1-20250805-thinking","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75},"updated":"2025-05-27"},"gemini-2.5-flash":{"name":"gemini-2.5-flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5},"updated":"2025-06-17"},"mistral-large-2512":{"name":"mistral-large-2512","limit":{"context":128000,"output":262144},"cost":{"input":1.1,"output":3.3},"updated":"2025-12-16"},"gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5},"updated":"2026-03-03"},"qwen3-30b-a3b":{"name":"Qwen3-30B-A3B","limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":1.08},"updated":"2025-04-29"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5},"updated":"2026-07-21"},"claude-sonnet-4-6-thinking":{"name":"claude-sonnet-4-6-thinking","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.188,"output":1.133},"updated":"2026-04-27"},"glm-5-turbo":{"name":"glm-5-turbo","limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2},"updated":"2026-03-16"},"gemini-3-pro-image-preview":{"name":"gemini-3-pro-image-preview","limit":{"context":32768,"output":64000},"cost":{"input":2,"output":120},"updated":"2025-11-20"},"gpt-5.2":{"name":"gpt-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2025-12-12"},"gemini-3-pro-preview":{"name":"gemini-3-pro-preview","limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12},"updated":"2025-11-19"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75},"updated":"2026-08-13"},"doubao-seed-1-8-251215":{"name":"doubao-seed-1-8-251215","limit":{"context":224000,"output":64000},"cost":{"input":0.114,"output":0.286},"updated":"2025-12-18"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5},"updated":"2026-04-17"},"gpt-5.6-luna-pro":{"name":"gpt-5.6-luna-pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2},"updated":"2026-07-09"},"claude-sonnet-4-5-20250929-thinking":{"name":"claude-sonnet-4-5-20250929-thinking","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"updated":"2025-09-30"},"gpt-5-mini":{"name":"gpt-5-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2},"updated":"2025-08-08"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-04-21"},"claude-opus-4-7-thinking":{"name":"claude-opus-4-7-thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-04-16"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5},"updated":"2026-07-21"},"gemini-3.1-flash-image-preview":{"name":"gemini-3.1-flash-image-preview","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60},"updated":"2026-02-27"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6},"updated":"2026-08-12"},"glm-4.6":{"name":"glm-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142},"updated":"2025-09-30"},"gpt-5-thinking":{"name":"gpt-5-thinking","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-08-08"},"grok-4-fast-non-reasoning":{"name":"grok-4-fast-non-reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5},"updated":"2025-09-23"},"claude-haiku-4-5-20251001":{"name":"claude-haiku-4-5-20251001","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5},"updated":"2025-10-16"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10},"updated":"2026-06-30"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2.16,"output":6.36},"updated":"2026-08-03"},"MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":1000000,"output":128000},"cost":{"input":0.33,"output":1.32},"updated":"2025-10-26"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.12,"output":0.69},"updated":"2026-02-16"},"gemini-2.0-flash-lite":{"name":"gemini-2.0-flash-lite","limit":{"context":2000000,"output":8192},"cost":{"input":0.075,"output":0.3},"updated":"2025-06-16"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8},"updated":"2026-04-02"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.72,"output":2.88},"updated":"2026-06-01"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75},"updated":"2026-09-02"},"gemini-2.5-pro":{"name":"gemini-2.5-pro","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":10},"updated":"2025-06-17"},"gemini-2.5-flash-preview-09-2025":{"name":"gemini-2.5-flash-preview-09-2025","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5},"updated":"2025-09-26"},"qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.06,"output":0.46},"updated":"2026-02-23"},"gpt-5.1":{"name":"gpt-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-11-14"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"deepseek-v3.2-thinking":{"name":"DeepSeek-V3.2-Thinking","limit":{"context":128000,"output":128000},"cost":{"input":0.29,"output":0.43},"updated":"2025-12-01"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-09-04"},"glm-4.5v":{"name":"GLM-4.5V","limit":{"context":64000,"output":16384},"cost":{"input":0.29,"output":0.86},"updated":"2025-08-12"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6},"updated":"2026-07-08"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":0.5},"updated":"2026-09-21"},"gpt-5.4-nano":{"name":"gpt-5.4-nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25},"updated":"2026-03-19"},"glm-5":{"name":"glm-5","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.6},"updated":"2026-02-12"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-4.1":{"name":"gpt-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8},"updated":"2025-04-14"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-18"},"doubao-seed-1-6-thinking-250715":{"name":"doubao-seed-1-6-thinking-250715","limit":{"context":256000,"output":16000},"cost":{"input":0.121,"output":1.21},"updated":"2025-07-15"},"claude-opus-4-5-20251101":{"name":"claude-opus-4-5-20251101","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25},"updated":"2025-11-25"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8},"updated":"2025-04-16"},"kimi-k2-0905-preview":{"name":"kimi-k2-0905-preview","limit":{"context":262144,"output":262144},"cost":{"input":0.632,"output":2.53},"updated":"2025-09-05"},"MiniMax-M1":{"name":"MiniMax-M1","limit":{"context":1000000,"output":128000},"cost":{"input":0.132,"output":1.254},"updated":"2025-06-16"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":10,"cache_read":0.2,"cache_write":0.375},"updated":"2026-10-13"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.8,"output":5.3},"updated":"2026-05-21"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"grok-4-1-fast-reasoning":{"name":"grok-4-1-fast-reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5},"updated":"2025-11-20"},"gemini-2.5-flash-image":{"name":"gemini-2.5-flash-image","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30},"updated":"2025-10-08"},"glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.286,"output":1.142},"updated":"2025-07-29"}}},"llmtr":{"name":"LLMTR","npm":"@ai-sdk/openai-compatible","models":{"gemma-4":{"name":"Gemma 4","limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5},"updated":"2026-04-02"},"qwen3-6-35b":{"name":"Qwen3.6 35B-A3B","limit":{"context":16384,"output":16384},"cost":{"input":5,"output":10},"updated":"2026-04-17"},"magibu-11b-v8":{"name":"Magibu 11B v8","limit":{"context":8192,"output":8192},"cost":{"input":0.1,"output":0.5},"updated":"2026-08-16"},"muse-glimmer-30b-tr":{"name":"Muse Glimmer 30B (TR)","limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5},"updated":"2026-08-10"},"trendyol-asure-12b":{"name":"Trendyol Asure 12B","limit":{"context":40960,"output":40960},"cost":{"input":0.1,"output":0.5,"cache_read":0.025},"updated":"2026-02-20"},"medgemma-4b":{"name":"MedGemma 4B","limit":{"context":8192,"output":8192},"cost":{"input":3,"output":5},"updated":"2026-08-16"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30},"updated":"2026-06-15"},"meta/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2},"updated":"2026-08-05"},"publicai/apertus-70b-instruct":{"name":"Apertus 70B Instruct","limit":{"context":65536,"output":8192},"cost":{"input":0.82,"output":2.92},"updated":"2025-09-02"},"publicai/apertus-8b-instruct":{"name":"Apertus 8B Instruct","limit":{"context":65536,"output":8192},"cost":{"input":0.1,"output":0.2},"updated":"2025-09-02"},"mistral/voxtral-small-latest":{"name":"Voxtral Small (latest)","limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"},"perplexity/sonar-deep-research":{"name":"Sonar Deep Research","limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-09-01"},"poolside/laguna-xs-2.1":{"name":"Laguna XS 2.1","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-02"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.1},"updated":"2025-06-17"},"upstage/solar-pro4":{"name":"Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12},"updated":"2026-08-06"},"upstage/solar-pro2":{"name":"Solar Pro 2","limit":{"context":65536,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2025-05-20"},"upstage/solar-pro3":{"name":"Solar Pro 3","limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2026-01"},"mimo/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87},"updated":"2026-04-22"},"mimo/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28},"updated":"2026-04-22"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":256000,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6},"updated":"2026-06-02"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2},"updated":"2025-09-11"},"qwen/qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4},"updated":"2025-07-28"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5},"updated":"2026-04-27"},"qwen/qwen3-max":{"name":"Qwen3 Max","limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6},"updated":"2025-09-23"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4},"updated":"2026-02-16"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2026-04-02"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5},"updated":"2025-07-28"},"qwen/qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5},"updated":"2025-07-23"},"qwen/qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":256000,"output":32768},"cost":{"input":0.2,"output":1.6},"updated":"2025-09-23"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":262144,"output":262144},"cost":{"input":1.87,"output":4.68},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":262144,"output":262144},"cost":{"input":0.58,"output":1.44},"updated":"2026-07-30"}}},"stepfun-ai":{"name":"StepFun (Global)","npm":"@ai-sdk/openai-compatible","models":{"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1024000,"output":65536},"cost":{"input":1,"output":2.7,"cache_read":0.05},"updated":"2026-09-20"},"stepaudio-2.5-tts":{"name":"StepAudio 2.5 TTS","limit":{"context":0,"output":0},"updated":"2026-07-02"},"step-tts-2":{"name":"Step TTS 2","limit":{"context":0,"output":0},"updated":"2026-07-02"},"step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-06-15"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037},"updated":"2026-06-29"},"step-3.5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-04-02"},"step-1-32k":{"name":"Step 1 (32K)","limit":{"context":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41},"updated":"2026-02-13"},"stepaudio-2.5-asr":{"name":"StepAudio 2.5 ASR","limit":{"context":0,"output":0},"updated":"2026-07-02"},"step-2-16k":{"name":"Step 2 (16K)","limit":{"context":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04},"updated":"2026-02-13"}}},"wandb":{"name":"CoreWeave","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama 3.3 70B","limit":{"context":128000,"output":128000},"cost":{"input":0.71,"output":0.71,"cache_read":0.71},"updated":"2024-12-01"},"meta-llama/Llama-3.1-8B-Instruct":{"name":"Llama 3.1 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.22,"output":0.22,"cache_read":0.22},"updated":"2024-07-23"},"reflection/Beam-1.0-501B-A23B":{"name":"Beam 1.0","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":3,"cache_read":0.1},"updated":"2026-10-16"},"zai-org/GLM-5.2":{"name":"GLM 5.2","limit":{"context":1048576,"output":1048576},"cost":{"input":0.62,"output":2.42,"cache_read":0.14},"updated":"2026-06-16"},"zai-org/GLM-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4,"cache_read":0.19},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.02},"updated":"2026-08-26"},"openai/gpt-oss-20b":{"name":"gpt-oss-20b","limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.03},"updated":"2025-08-05"},"openai/gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.17,"cache_read":0.03},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax M3","limit":{"context":262144,"output":262144},"cost":{"input":0.23,"output":0.96,"cache_read":0.05},"updated":"2026-06-12"},"nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B":{"name":"Nemotron 3.5 Super VL","limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.02},"updated":"2026-10-15"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B":{"name":"Nemotron 3.5 Lightning","limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.2,"cache_read":0.04},"updated":"2026-08-11"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"name":"Nemotron 3 Ultra","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.15,"cache_read":0.1},"updated":"2026-06-04"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15},"updated":"2026-08-14"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.25,"cache_read":0.25},"updated":"2026-04-15"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":3.5,"cache_read":0.15},"updated":"2026-06-12"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"updated":"2026-04-20"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.34,"cache_read":0.1},"updated":"2026-04-02"},"google/gemma-4-26B-A4B-it":{"name":"Gemma 4 26B A4B","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"ibm-granite/granite-4.2-8b":{"name":"Granite 4.2 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.15,"cache_read":0.05},"updated":"2026-08-24"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.28,"cache_read":0.07},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.65,"cache_read":0.002},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":1048576},"cost":{"input":1.31,"output":3.96,"cache_read":0.044},"updated":"2026-08-13"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek V3.1","limit":{"context":161000,"output":161000},"cost":{"input":0.55,"output":1.65,"cache_read":0.55},"updated":"2025-08-21"}}},"venice":{"name":"Venice AI","npm":"venice-ai-sdk-provider","models":{"kimi-k2-5":{"name":"Kimi K2.5","limit":{"context":256000,"output":65536},"cost":{"input":0.56,"output":3.5,"cache_read":0.22},"updated":"2026-06-11"},"gemini-3-8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"updated":"2026-09-02"},"zai-org-glm-4.7":{"name":"GLM 4.7","limit":{"context":198000,"output":16384},"cost":{"input":0.55,"output":2.65,"cache_read":0.11},"updated":"2026-06-11"},"google-gemma-4-31b-it":{"name":"Google Gemma 4 31B Instruct","limit":{"context":256000,"output":8192},"cost":{"input":0.12,"output":0.36,"cache_read":0.09},"updated":"2026-06-11"},"openai-gpt-56-sol-pro":{"name":"GPT-5.6 Sol Pro","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"zai-org-glm-5":{"name":"GLM 5","limit":{"context":198000,"output":32000},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-06-11"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-11"},"qwen3-5-35b-a3b":{"name":"Qwen 3.5 35B A3B","limit":{"context":256000,"output":16384},"cost":{"input":0.15,"output":1,"cache_read":0.05},"updated":"2026-06-11"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen 3 235B A22B Instruct 2507","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.75},"updated":"2026-06-11"},"qwen-3-7-max":{"name":"Qwen 3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.7,"output":8.05,"cache_read":0.27,"cache_write":3.35},"updated":"2026-06-11"},"nvidia-nemotron-3-5-super-vl-120b-a12b":{"name":"NVIDIA Nemotron 3.5 Super VL 120B","limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":1.25,"cache_read":0.125},"updated":"2026-10-16"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-06-11"},"openai-gpt-54-pro":{"name":"GPT-5.4 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-06-11"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":32768},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"updated":"2026-08-01"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-06-11"},"openai-gpt-56-luna-pro":{"name":"GPT-5.6 Luna Pro","limit":{"context":1000000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"qwen-3-6-plus":{"name":"Qwen 3.6 Plus Uncensored","limit":{"context":1000000,"output":65536},"cost":{"input":0.625,"output":3.75,"cache_read":0.0625,"cache_write":0.78},"updated":"2026-06-11"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"abliteration-abliterated-model-large-v2":{"name":"Abliterated Large V2","limit":{"context":1000000,"output":32768},"cost":{"input":3,"output":5,"cache_read":0.3},"updated":"2026-10-01"},"nvidia-nemotron-3-nano-30b-a3b":{"name":"NVIDIA Nemotron 3 Nano 30B","limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.3},"updated":"2026-06-11"},"qwen3-next-80b":{"name":"Qwen 3 Next 80b","limit":{"context":256000,"output":16384},"cost":{"input":0.35,"output":1.9},"updated":"2026-06-11"},"openai-gpt-54-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-06-11"},"claude-opus-4-8-fast":{"name":"Claude Opus 4.8 Fast","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-11"},"openai-gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"qwen3-5-397b-a17b":{"name":"Qwen 3.5 397B","limit":{"context":128000,"output":32768},"cost":{"input":0.75,"output":4.5},"updated":"2026-06-11"},"qwen3-vl-235b-a22b":{"name":"Qwen3 VL 235B","limit":{"context":128000,"output":16384},"cost":{"input":0.21,"output":1.9,"cache_read":0.1},"updated":"2026-06-11"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-06-11"},"muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.5625,"output":5.3125,"cache_read":0.1875},"updated":"2026-10-15"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"muse-wonder":{"name":"Muse Wonder","limit":{"context":1048576,"output":131072},"cost":{"input":5,"output":25,"cache_read":0.25},"updated":"2026-10-15"},"kimi-k3-fast-api":{"name":"Kimi K3 Fast","limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-08-03"},"minimax-m3-preview":{"name":"MiniMax M3 Preview","limit":{"context":524288,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-13"},"zai-org-glm-4.6":{"name":"GLM 4.6","limit":{"context":198000,"output":16384},"cost":{"input":0.43,"output":1.75,"cache_read":0.08},"updated":"2026-06-11"},"minimax-m25":{"name":"MiniMax M2.5","limit":{"context":198000,"output":32768},"cost":{"input":0.27,"output":0.95,"cache_read":0.03},"updated":"2026-06-11"},"google-gemma-3-27b-it":{"name":"Google Gemma 3 27B Instruct","limit":{"context":198000,"output":16384},"cost":{"input":0.12,"output":0.2},"updated":"2026-06-11"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":3.301,"cache_read":0.33},"updated":"2026-06-11"},"gemini-3-1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1000000,"output":32768},"cost":{"input":2.5,"output":15,"cache_read":0.5,"cache_write":0.5},"updated":"2026-06-11"},"hy4-preview":{"name":"Hy4 Preview","limit":{"context":1048576,"output":64000},"cost":{"input":1.0425,"output":3.12625,"cache_read":0.0525},"updated":"2026-10-15"},"google-gemma-4-26b-a4b-it":{"name":"Google Gemma 4 26B A4B Instruct","limit":{"context":256000,"output":8192},"cost":{"input":0.13,"output":0.4,"cache_read":0.05},"updated":"2026-06-11"},"aion-labs-aion-3-0":{"name":"Aion 3.0","limit":{"context":128000,"output":32768},"cost":{"input":3.75,"output":7.5,"cache_read":0.9375},"updated":"2026-07-08"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":256000,"output":65536},"cost":{"input":0.7,"output":3.75,"cache_read":0.07},"updated":"2026-06-11"},"nvidia-nemotron-3-ultra-550b-a55b":{"name":"NVIDIA Nemotron 3 Ultra","limit":{"context":256000,"output":32768},"cost":{"input":0.625,"output":3.125,"cache_read":0.1875},"updated":"2026-06-11"},"openai-gpt-55":{"name":"GPT-5.5","limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-11"},"grok-build-0-1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":65536},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-06-11"},"seed-2-1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":256000,"output":65536},"cost":{"input":0.625,"output":3.125,"cache_read":0.125},"updated":"2026-07-24"},"openai-gpt-61-sol-ultrafast":{"name":"GPT-6.1 Sol Ultrafast","limit":{"context":1050000,"output":128000},"cost":{"input":12,"output":60,"cache_read":0.6,"cache_write":15},"updated":"2026-10-10"},"xiaomi-mimo-v2-5":{"name":"MiMo-V2.5","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2,"cache_read":0.08},"updated":"2026-06-11"},"llama-3.2-3b":{"name":"Llama 3.2 3B","limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.6},"updated":"2026-06-11"},"zai-org-glm-4.7-flash":{"name":"GLM 4.7 Flash","limit":{"context":128000,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"updated":"2026-06-11"},"kimi-k2-6":{"name":"Kimi K2.6","limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16},"updated":"2026-06-11"},"openai-gpt-56-terra":{"name":"GPT-5.6 Terra","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai-gpt-54":{"name":"GPT-5.4","limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-06-11"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":160000,"output":32768},"cost":{"input":0.33,"output":0.48,"cache_read":0.16},"updated":"2026-06-11"},"grok-4-5":{"name":"Grok 4.5","limit":{"context":500000,"output":32000},"cost":{"input":2.27,"output":6.8,"cache_read":0.34},"updated":"2026-07-08"},"z-ai-glm-5-3":{"name":"GLM 5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.75,"output":5.5,"cache_read":0.325},"updated":"2026-08-18"},"venice-uncensored-role-play":{"name":"Venice Role Play Uncensored","limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":2},"updated":"2026-06-11"},"qwen3-6-35b-a3b":{"name":"Qwen 3.6 35B A3B","limit":{"context":256000,"output":65536},"cost":{"input":0.1,"output":1},"updated":"2026-07-22"},"xiaomi-mimo-v2-6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.175,"output":0.35,"cache_read":0.00375},"updated":"2026-09-28"},"z-ai-glm-5v-turbo":{"name":"GLM 5V Turbo","limit":{"context":200000,"output":32768},"cost":{"input":1.5,"output":5,"cache_read":0.3},"updated":"2026-06-11"},"aion-labs-aion-3-5":{"name":"Aion 3.5","limit":{"context":262144,"output":32768},"cost":{"input":3.75,"output":7.5,"cache_read":0.9375},"updated":"2026-09-23"},"z-ai-glm-5-3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"deepseek-v4-1-flash-1017":{"name":"DeepSeek v4.1 Flash (1017)","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.0075},"updated":"2026-10-18"},"gemini-3-5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":1.55,"output":9.45,"cache_read":0.155,"cache_write":0.086},"updated":"2026-06-11"},"grok-4-3":{"name":"Grok 4.3","limit":{"context":1000000,"output":32000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23},"updated":"2026-06-11"},"gemma-4-uncensored":{"name":"Gemma 4 Uncensored","limit":{"context":256000,"output":8192},"cost":{"input":0.1625,"output":0.5},"updated":"2026-06-11"},"llama-3.3-70b":{"name":"Llama 3.3 70B","limit":{"context":128000,"output":4096},"cost":{"input":0.7,"output":2.8},"updated":"2026-06-11"},"openai-gpt-56-terra-pro":{"name":"GPT-5.6 Terra Pro","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"aion-labs-aion-3-0-mini":{"name":"Aion 3.0 Mini","limit":{"context":128000,"output":32768},"cost":{"input":0.875,"output":1.75,"cache_read":0.225},"updated":"2026-07-08"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-06-11"},"claude-opus-5-fast":{"name":"Claude Opus 5 Fast","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-07-24"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5","limit":{"context":198000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-06-11"},"mistral-small-3-2-24b-instruct":{"name":"Mistral Small 3.2 24B Instruct","limit":{"context":256000,"output":16384},"cost":{"input":0.09375,"output":0.25},"updated":"2026-06-11"},"openai-gpt-61-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"qwen-3-8-27b":{"name":"Qwen 3.8 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.2},"updated":"2026-08-18"},"deepseek-v4-1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.0075},"updated":"2026-09-10"},"openai-gpt-55-pro":{"name":"GPT-5.5 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-06-11"},"openai-gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.3125,"output":0.9375,"cache_read":0.03125},"updated":"2026-06-11"},"gemini-3-6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"updated":"2026-07-21"},"openai-gpt-oss-120b":{"name":"OpenAI GPT OSS 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3},"updated":"2026-06-11"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-01"},"qwen-3-7-plus":{"name":"Qwen 3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2,"cache_read":0.05,"cache_write":0.625},"updated":"2026-06-11"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash 0423","limit":{"context":1000000,"output":32768},"cost":{"input":0.138,"output":0.275,"cache_read":0.028},"updated":"2026-06-11"},"olafangensan-glm-4.7-flash-heretic":{"name":"GLM 4.7 Flash Heretic","limit":{"context":200000,"output":24000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035},"updated":"2026-06-11"},"inkling":{"name":"Inkling","limit":{"context":524288,"output":65536},"cost":{"input":1.25,"output":5.0625,"cache_read":0.2125},"updated":"2026-07-17"},"openai-gpt-53-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-06-11"},"grok-4-20-multi-agent":{"name":"Grok 4.20 Multi-Agent","limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23},"updated":"2026-06-11"},"aion-labs-aion-3-5-mini":{"name":"Aion 3.5 Mini","limit":{"context":262144,"output":32768},"cost":{"input":0.875,"output":1.75,"cache_read":0.225},"updated":"2026-09-23"},"claude-opus-5-5-fast":{"name":"Claude Opus 5.5 Fast","limit":{"context":1000000,"output":128000},"cost":{"input":8,"output":40,"cache_read":0.4,"cache_write":10},"updated":"2026-09-28"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3.75,"output":18.75,"cache_read":0.375},"updated":"2026-07-17"},"grok-4-6":{"name":"Grok 4.6","limit":{"context":500000,"output":200000},"cost":{"input":2.27,"output":6.8,"cache_read":0.57},"updated":"2026-08-12"},"openai-gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"gemini-3-5-flash-lite":{"name":"Gemini 3.5 Flash-Lite","limit":{"context":1000000,"output":65536},"cost":{"input":0.375,"output":3.125,"cache_read":0.0375},"updated":"2026-07-21"},"openai-gpt-4o-2024-11-20":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2026-06-11"},"openai-gpt-4o-mini-2024-07-18":{"name":"GPT-4o Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2026-06-11"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":4.95,"cache_read":0.165},"updated":"2026-08-14"},"openai-gpt-52":{"name":"GPT-5.2","limit":{"context":256000,"output":65536},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-06-11"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"grok-4-20":{"name":"Grok 4.20","limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23},"updated":"2026-06-11"},"deepseek-v4-flash-0731-fast":{"name":"DeepSeek V4 Flash 0731 Fast","limit":{"context":1000000,"output":32768},"cost":{"input":0.35,"output":0.7,"cache_read":0.0875},"updated":"2026-08-11"},"mercury-2-5":{"name":"Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.25,"output":0.9375,"cache_read":0.025},"updated":"2026-09-09"},"kimi-k2-7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16},"updated":"2026-06-16"},"venice-uncensored-1-2":{"name":"Venice Uncensored 1.2","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9},"updated":"2026-06-11"},"gemini-3-7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"updated":"2026-08-14"},"z-ai-glm-5-turbo":{"name":"GLM 5 Turbo","limit":{"context":200000,"output":32768},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-06-11"},"qwen3-5-9b":{"name":"Qwen 3.5 9B","limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.15},"updated":"2026-06-11"},"zai-org-glm-5-1":{"name":"GLM 5.1","limit":{"context":200000,"output":80000},"cost":{"input":1.54,"output":4.84,"cache_read":0.286},"updated":"2026-06-11"},"qwen-3-8-2-4t-a95b":{"name":"Qwen 3.8 2.4T","limit":{"context":262144,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125},"updated":"2026-08-13"},"qwen3-235b-a22b-thinking-2507":{"name":"Qwen 3 235B A22B Thinking 2507","limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5},"updated":"2026-06-11"},"zai-org-glm-5-2":{"name":"GLM 5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-16"},"qwen-3-8-flash":{"name":"Qwen 3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.49,"cache_read":0.014},"updated":"2026-09-10"},"qwen-3-8-max":{"name":"Qwen 3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125,"cache_write":3.125},"updated":"2026-07-19"},"qwen3-coder-480b-a35b-instruct-turbo":{"name":"Qwen 3 Coder 480B Turbo","limit":{"context":256000,"output":65536},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-06-11"},"openai-gpt-56-luna":{"name":"GPT-5.6 Luna","limit":{"context":1000000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"minimax-m27":{"name":"MiniMax M2.7","limit":{"context":198000,"output":32768},"cost":{"input":0.375,"output":1.5,"cache_read":0.06875},"updated":"2026-06-11"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":12.5,"cache_read":0.125},"updated":"2026-10-14"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5":{"name":"Claude Opus 4.5","limit":{"context":198000,"output":32768},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-06-11"},"qwen3-6-27b":{"name":"Qwen 3.6 27B","limit":{"context":256000,"output":65536},"cost":{"input":0.325,"output":3.25},"updated":"2026-06-11"},"openai-gpt-56-sol":{"name":"GPT-5.6 Sol","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"grok-4-7":{"name":"Grok 4.7","limit":{"context":500000,"output":200000},"cost":{"input":2.27,"output":6.8,"cache_read":0.57},"updated":"2026-09-21"},"openai-gpt-6-astra-pro":{"name":"GPT-6 Astra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-05"},"hermes-3-llama-3.1-405b":{"name":"Hermes 3 Llama 3.1 405b","limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":3},"updated":"2026-06-11"}}},"drun":{"name":"D.Run (China)","npm":"@ai-sdk/openai-compatible","models":{"public/minimax-m25":{"name":"MiniMax M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.16},"updated":"2025-03-01"},"public/deepseek-r1":{"name":"DeepSeek R1","limit":{"context":131072,"output":32000},"cost":{"input":0.55,"output":2.2},"updated":"2025-01-20"},"public/deepseek-v3":{"name":"DeepSeek V3","limit":{"context":131072,"output":8192},"cost":{"input":0.28,"output":1.1},"updated":"2024-12-26"}}},"claudinio":{"name":"Claudinio","npm":"@ai-sdk/openai-compatible","models":{"claudinio":{"name":"Claudinio","limit":{"context":256000,"output":64000},"cost":{"input":0.5,"output":2,"cache_read":0.15},"updated":"2026-06-02"},"claudius":{"name":"Claudius","limit":{"context":256000,"output":64000},"cost":{"input":3,"output":8,"cache_read":0.9},"updated":"2026-05-12"}}},"agnes":{"name":"Agnes AI","npm":"@ai-sdk/openai-compatible","models":{"agnes-2.0-flash":{"name":"Agnes 2.0 Flash","limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-05-25"},"agnes-2.5-pro-alpha":{"name":"Agnes 2.5 Pro Alpha","limit":{"context":1000000,"output":65536},"cost":{"input":0.45,"output":0.9,"cache_read":0.0038},"updated":"2026-07-24"},"agnes-3.0-flash":{"name":"Agnes 3.0 Flash","limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-09"},"agnes-2.5-flash":{"name":"Agnes 2.5 Flash","limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-07"}}},"commandcode":{"name":"CommandCode","npm":"@ai-sdk/openai-compatible","models":{"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":0},"updated":"2026-04-23"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":0},"updated":"2026-03-05"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":2,"output":8,"cache_read":0.5,"cache_write":0},"updated":"2026-02-05"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"stepfun/Step-3.7-Flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"stepfun/Step-5-Preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"updated":"2026-09-20"},"stepfun/Step-3.5-Flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.09,"output":0.3,"cache_read":0.02},"updated":"2026-02-13"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai-org/GLM-5.2-Fast":{"name":"GLM-5.2-Fast","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":10.25,"cache_read":0.5},"updated":"2026-06-13"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"inclusionai/ling-3.1-flash:free":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-29"},"meta/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 (Contributor)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-05"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 (Contributor)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":200000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":200000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"deepseek/deepseek-v4-flash-fast":{"name":"DeepSeek V4 Flash Fast","limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-fast":{"name":"DeepSeek V4.1 Flash Fast","limit":{"context":1000000,"output":384000},"cost":{"input":0.16,"output":0.58,"cache_read":0.016},"updated":"2026-09-10"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-01"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-04-24"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1000000,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-04"},"mistral/mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"updated":"2026-10-06"},"Qwen/Qwen3.8-Max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-02"},"Qwen/Qwen3.8-Max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.04},"updated":"2026-08-14"},"Qwen/Qwen3.8-Omni-Flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"Qwen/Qwen3.8-Flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"moonshotai/Kimi-K2.7-Code-Highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262000,"output":262000},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.03},"updated":"2026-05-07"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.08334},"updated":"2026-08-13"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-09-02"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1000000,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"z-ai/glm-5.3-flashx":{"name":"GLM-5.3-FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075},"updated":"2026-08-26"},"tencent/hy3-paid":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":1000000,"output":1000000},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"}}},"minimax-cn":{"name":"MiniMax (minimax.cn)","npm":"@ai-sdk/anthropic","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"MiniMax-M3.1-Flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1000000,"output":512000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-19"},"MiniMax-M2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-02-13"},"MiniMax-M2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-25"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"}}},"tinfoil":{"name":"Tinfoil","npm":"@ai-sdk/openai-compatible","models":{"gemma4-31b":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":1},"updated":"2026-04-02"},"gpt-oss-safeguard-120b":{"name":"gpt-oss-safeguard-120b","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-29"},"deepseek-v4-1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.65,"output":1.45,"cache_read":0.13},"updated":"2026-09-10"},"kimi-k3":{"name":"Kimi K3","limit":{"context":262144,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.8},"updated":"2026-07-16"},"gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"llama3-3-70b":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":4096},"cost":{"input":1.75,"output":2.75},"updated":"2024-12-06"},"glm-5-3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.8,"output":5.75,"cache_read":0.45},"updated":"2026-08-14"},"nomic-embed-text":{"name":"Nomic Embed Text v1.5","limit":{"context":8192,"output":768},"cost":{"input":0.05,"output":0},"updated":"2024-02"}}},"alibaba-token-plan-cn":{"name":"Alibaba Token Plan (China)","npm":"@ai-sdk/openai-compatible","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-02"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-31"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"happyhorse-1.1-i2v":{"name":"HappyHorse 1.1 Image-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"happyhorse-1.1-r2v":{"name":"HappyHorse 1.1 Reference-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-24"},"deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-10-17"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-13"},"qwen3.8-max-preview":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-19"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-12-05"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-07"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-27"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-21"},"wan2.7-image-pro":{"name":"Wan2.7 Image Pro","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-24"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-03"},"wan2.7-image":{"name":"Wan2.7 Image","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-02"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-22"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen-image-2.0-pro":{"name":"Qwen Image 2.0 Pro","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"happyhorse-1.1-t2v":{"name":"HappyHorse 1.1 Text-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"qwen-image-2.0":{"name":"Qwen Image 2.0","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-05-21"}}},"iflowcn":{"name":"iFlow","npm":"@ai-sdk/openai-compatible","models":{"qwen3-max-preview":{"name":"Qwen3-Max-Preview","limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"kimi-k2":{"name":"Kimi-K2","limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0},"updated":"2024-12-01"},"deepseek-v3.2":{"name":"DeepSeek-V3.2-Exp","limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"qwen3-32b":{"name":"Qwen3-32B","limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0},"updated":"2024-12-01"},"kimi-k2-0905":{"name":"Kimi-K2-0905","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2025-09-05"},"deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0},"updated":"2025-01-20"},"qwen3-235b":{"name":"Qwen3-235B-A22B","limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0},"updated":"2024-12-01"},"qwen3-235b-a22b-instruct":{"name":"Qwen3-235B-A22B-Instruct","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2025-07-01"},"deepseek-v3":{"name":"DeepSeek-V3","limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0},"updated":"2024-12-26"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0},"updated":"2025-11-13"},"qwen3-max":{"name":"Qwen3-Max","limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0},"updated":"2025-01-01"},"qwen3-235b-a22b-thinking-2507":{"name":"Qwen3-235B-A22B-Thinking","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2025-07-01"},"qwen3-coder-plus":{"name":"Qwen3-Coder-Plus","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2025-07-01"},"qwen3-vl-plus":{"name":"Qwen3-VL-Plus","limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0},"updated":"2025-01-01"}}},"aixy":{"name":"Aixy","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"}}},"requesty":{"name":"Requesty","npm":"@ai-sdk/openai-compatible","models":{"gpt-4.1-nano@eu":{"name":"GPT-4.1 nano (EU)","limit":{"context":1047576,"output":32768},"cost":{"input":0.11,"output":0.44,"cache_read":0.0275},"updated":"2025-04-14"},"kimi-k2.7-code@eu":{"name":"Kimi K2.7 Code (EU)","limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.31},"updated":"2026-06-12"},"gpt-5.1@eu":{"name":"GPT-5.1 (EU)","limit":{"context":400000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375},"updated":"2025-11-13"},"gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2},"updated":"2026-05-28"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.6,"cache_read":0.07},"updated":"2026-08-26"},"kimi-k2.5@eu":{"name":"Kimi K2.5 (EU)","limit":{"context":128000,"output":16000},"cost":{"input":0.72,"output":3.6,"cache_read":0.72,"cache_write":0.72},"updated":"2026-01"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"gemini-3.7-flash@eu":{"name":"Gemini 3.7 Flash (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"updated":"2026-08-13"},"minimax-m3@eu":{"name":"MiniMax-M3 (EU)","limit":{"context":1048576,"output":1048576},"cost":{"input":0.4,"output":2,"cache_read":0.1},"updated":"2026-06-01"},"claude-sonnet-4-6@eu":{"name":"Claude Sonnet 4.6 (EU)","limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125},"updated":"2026-03-13"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"gemini-3.8-flash@eu":{"name":"Gemini 3.8 Flash (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"updated":"2026-09-02"},"qwen3.8-2.4T-A95B":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-08-12"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1048576,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.032,"cache_write":0.4},"updated":"2026-06-02"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"updated":"2026-07-31"},"laguna-xs.2":{"name":"Laguna XS.2","limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"glm-5.1@eu":{"name":"GLM-5.1 (EU)","limit":{"context":200000,"output":200000},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"updated":"2026-04-07"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"claude-haiku-4-5@eu":{"name":"Claude Haiku 4.5 (latest) (EU)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"claude-opus-5@eu":{"name":"Claude Opus 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"gpt-5-nano@eu":{"name":"GPT-5 Nano (EU)","limit":{"context":200000,"output":100000},"cost":{"input":0.055,"output":0.44,"cache_read":0.0055},"updated":"2025-08-07"},"muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":943718},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"updated":"2026-05-07"},"claude-haiku-5-5@eu":{"name":"Claude Haiku 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.02,"cache_write":0.14},"updated":"2026-10-07"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"updated":"2026-08-14"},"claude-sonnet-5@eu":{"name":"Claude Sonnet 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"devstral-latest@eu":{"name":"devstral-latest@eu","limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"updated":"2026-05-27"},"gpt-4.1@eu":{"name":"GPT-4.1 (EU)","limit":{"context":1047576,"output":32768},"cost":{"input":2.2,"output":8.8,"cache_read":0.55},"updated":"2025-04-14"},"nvidia-nemotron-3-super-120b-a12b":{"name":"nvidia-nemotron-3-super-120b-a12b","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.5},"updated":"2026-03-11"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55},"updated":"2026-04-23"},"devstral-latest":{"name":"devstral-latest","limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"updated":"2026-05-27"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"qwen3.8-2.4T-A95B@eu":{"name":"Qwen3.8 2.4T A95B (EU)","limit":{"context":1000000,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.63},"updated":"2026-08-12"},"claude-opus-4-7@eu":{"name":"Claude Opus 4.7 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"claude-fable-5@eu":{"name":"Claude Fable 5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"updated":"2026-06-09"},"nemotron-3-nano-omni":{"name":"nemotron-3-nano-omni","limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06},"updated":"2026-05-20"},"seed-2.0-pro":{"name":"Seed 2.0 Pro","limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-02-14"},"gemini-3.5-flash@eu":{"name":"Gemini 3.5 Flash (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":1.65,"output":9.9,"cache_read":0.165,"cache_write":1.7413},"updated":"2026-05-19"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"mistral-medium-3-5@eu":{"name":"Mistral Medium 3.5 (EU)","limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65},"updated":"2026-04-30"},"gpt-6-luna@eu":{"name":"GPT-6 Luna (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":0.12,"output":0.6,"cache_read":0.012,"cache_write":0.15},"updated":"2026-09-22"},"seed-1.8":{"name":"seed-1.8","limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2026-05-27"},"claude-opus-4-6@eu":{"name":"Claude Opus 4.6 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-03-13"},"gpt-6.1-sol@eu":{"name":"GPT-6.1 Sol (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.12,"cache_write":3},"updated":"2026-09-29"},"inkling-256k":{"name":"inkling-256k","limit":{"context":262144,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"updated":"2026-07-16"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"gpt-5.6-terra@eu":{"name":"GPT-5.6 Terra (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"updated":"2026-07-09"},"gpt-5.5@eu":{"name":"GPT-5.5 (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55},"updated":"2026-04-23"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-04-24"},"claude-fable-5.1@eu":{"name":"Claude Fable 5.1 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"updated":"2026-09-01"},"grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.1},"updated":"2026-04-16"},"gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":1048576,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"updated":"2026-05-28"},"nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2026-10-17"},"deepseek-v4-pro-0813@eu":{"name":"DeepSeek V4 Pro 0813 (EU)","limit":{"context":1048576,"output":65536},"cost":{"input":1.75,"output":3.5,"cache_read":0.44},"updated":"2026-08-22"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"updated":"2026-06-13"},"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":2.7,"cache_read":0.05},"updated":"2026-09-20"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"claude-sonnet-5-5@eu":{"name":"Claude Sonnet 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-09-28"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.34,"cache_read":0.07},"updated":"2026-04-02"},"gemini-4-argon@eu":{"name":"Gemini 4 Argon (EU)","limit":{"context":1048576,"output":65536},"cost":{"input":2.2,"output":11,"cache_read":0.11},"updated":"2026-10-13"},"ling-2.6-1t":{"name":"ling-2.6-1t","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5},"updated":"2026-04-23"},"gpt-6-sol@eu":{"name":"GPT-6 Sol (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.24,"cache_write":3},"updated":"2026-09-22"},"ling-3.0-tiny":{"name":"ling-3.0-tiny","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-08-05"},"qwen3.8-flash-next":{"name":"Qwen3.8 Flash Next","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2026-08-27"},"mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165},"updated":"2026-03-16"},"claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"gpt-5-mini@eu":{"name":"GPT-5 Mini (EU)","limit":{"context":200000,"output":100000},"cost":{"input":0.275,"output":2.2,"cache_read":0.0275},"updated":"2025-08-07"},"qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.6},"updated":"2026-02-23"},"qwen3.8-flash-next@eu":{"name":"Qwen3.8 Flash Next (EU)","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2026-08-27"},"deepseek-v4.1-flash-1017@eu":{"name":"DeepSeek V4.1 Flash 1017 (EU)","limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2026-10-17"},"gpt-4.1-mini@eu":{"name":"GPT-4.1 mini (EU)","limit":{"context":1047576,"output":32768},"cost":{"input":0.44,"output":1.76,"cache_read":0.11},"updated":"2025-04-14"},"ling-2.6-flash":{"name":"ling-2.6-flash","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3},"updated":"2026-04-21"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"nemotron-3.5-lightning-30b-a3b":{"name":"nemotron-3.5-lightning-30b-a3b","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275},"updated":"2026-03-05"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65535},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gpt-5.6-luna@eu":{"name":"GPT-5.6 Luna (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"deepseek-v4-flash-0731@eu":{"name":"DeepSeek V4 Flash 0731 (EU)","limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"updated":"2026-07-31"},"qwen3.5-2b":{"name":"qwen3.5-2b","limit":{"context":262144,"output":262144},"cost":{"input":0.02,"output":0.1},"updated":"2026-03-10"},"deepseek-v4.1-flash@eu":{"name":"DeepSeek V4.1 Flash (EU)","limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2026-09-10"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"claude-sonnet-4-5@eu":{"name":"Claude Sonnet 4.5 (latest) (EU)","limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125},"updated":"2025-09-29"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25},"updated":"2026-04-17"},"mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":524288},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"grok-4.2-beta":{"name":"grok-4.2-beta","limit":{"context":2000000,"output":2000000},"cost":{"input":2,"output":6,"cache_read":0.2,"cache_write":2},"updated":"2026-03-19"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0027},"updated":"2026-09-22"},"kimi-k2.6@eu":{"name":"Kimi K2.6 (EU)","limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.95},"updated":"2026-04-21"},"seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"updated":"2026-02-14"},"nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"nemotron-3-ultra-nvfp4":{"name":"nemotron-3-ultra-nvfp4","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-13"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"claude-opus-4-5@eu":{"name":"Claude Opus 4.5 (latest) (EU)","limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2025-11-24"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-04-22"},"glm-5.2-fast":{"name":"glm-5.2-fast","limit":{"context":1000000,"output":131072},"cost":{"input":2.1,"output":6.6,"cache_read":0.21},"updated":"2026-07-13"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5@eu":{"name":"GPT-5 (EU)","limit":{"context":400000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375},"updated":"2025-08-07"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":7,"cache_read":0.15},"updated":"2026-07-21"},"muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0},"updated":"2026-08-10"},"gemini-3.1-flash-lite@eu":{"name":"Gemini 3.1 Flash Lite (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.275,"output":1.65,"cache_read":0.0275,"cache_write":0.091663},"updated":"2026-05-07"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-08-12"},"claude-opus-4-8@eu":{"name":"Claude Opus 4.8 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-05-28"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"nemotron-lightning-3.5-30b-a3b":{"name":"nemotron-lightning-3.5-30b-a3b","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"updated":"2026-08-15"},"glm-5.3-flash@eu":{"name":"GLM-5.3-Flash (EU)","limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.6,"cache_read":0.07},"updated":"2026-08-26"},"minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":1.2},"updated":"2026-03-18"},"leanstral-1-5@eu":{"name":"leanstral-1-5@eu","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-05-27"},"seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-02-14"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"gemini-2.5-pro@eu":{"name":"Gemini 2.5 Pro (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":2.375},"updated":"2025-06-17"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"updated":"2026-04-24"},"kat-coder-pro":{"name":"kat-coder-pro","limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-27"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"inkling":{"name":"Inkling","limit":{"context":65536,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"updated":"2026-07-15"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"mistral-medium-latest":{"name":"Mistral Medium (latest)","limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"updated":"2026-04-29"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15,"cache_read":0.45},"updated":"2026-07-16"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"nvidia-nemotron-3-ultra":{"name":"nvidia-nemotron-3-ultra","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":2.5},"updated":"2026-06-23"},"claude-opus-4-1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"mistral-medium-3-5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65},"updated":"2026-04-30"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"mistral-medium-latest@eu":{"name":"Mistral Medium (latest) (EU)","limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"updated":"2026-04-29"},"nemotron-3-nano-omni@eu":{"name":"nemotron-3-nano-omni@eu","limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06},"updated":"2026-05-20"},"hy3":{"name":"Hy3","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":1,"cache_read":0.05},"updated":"2026-02-23"},"glm-5.3@eu":{"name":"GLM-5.3 (EU)","limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"updated":"2026-08-14"},"leanstral-1-5":{"name":"leanstral-1-5","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-05-27"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.13},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-07-08"},"gpt-5.4@eu":{"name":"GPT-5.4 (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275},"updated":"2026-03-05"},"mistral-small-2603@eu":{"name":"Mistral Small 4 (EU)","limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165},"updated":"2026-03-16"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-09-21"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gpt-4o-mini@eu":{"name":"GPT-4o mini (EU)","limit":{"context":128000,"output":16000},"cost":{"input":0.165,"output":0.66,"cache_read":0.0825},"updated":"2024-07-18"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.583},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-5.6-sol@eu":{"name":"GPT-5.6 Sol (EU)","limit":{"context":1050000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5},"updated":"2026-07-09"},"ring-2.6-1t":{"name":"ring-2.6-1t","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5},"updated":"2026-05-08"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"claude-sonnet-4@eu":{"name":"Claude Sonnet 4 (latest) (EU)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"cache_read":30},"updated":"2026-03-05"},"o4-mini@eu":{"name":"o4-mini (EU)","limit":{"context":200000,"output":100000},"cost":{"input":1.21,"output":4.84,"cache_read":0.3025},"updated":"2025-04-16"},"nemotron-3-nano-omni-30b-a3b-reasoning":{"name":"Nemotron 3 Nano Omni 30B A3B Reasoning","limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0},"updated":"2026-04-28"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1048576,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125},"updated":"2026-05-21"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-5-5@eu":{"name":"Claude Opus 5.5 (EU)","limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"updated":"2026-09-22"},"deepseek-v4-pro@eu":{"name":"DeepSeek V4 Pro (EU)","limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.44},"updated":"2026-04-24"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":1.2},"updated":"2026-03-18"},"laguna-m.1":{"name":"Laguna M.1","limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"gemini-3.5-flash-lite@eu":{"name":"Gemini 3.5 Flash Lite (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.033},"updated":"2026-07-21"},"fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1048576,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"mistral-large-4@eu":{"name":"Mistral Large 4 (EU)","limit":{"context":524288,"output":524288},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"gemini-2.5-flash-lite@eu":{"name":"Gemini 2.5 Flash-Lite (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.18333},"updated":"2025-06-17"},"gemini-2.5-flash@eu":{"name":"Gemini 2.5 Flash (EU)","limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.55},"updated":"2025-06-17"},"kimi-k3@eu":{"name":"Kimi K3 (EU)","limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15,"cache_read":0.45},"updated":"2026-07-16"},"glm-5.2@eu":{"name":"GLM-5.2 (EU)","limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"updated":"2026-06-13"}}},"stepfun-ai-step-plan":{"name":"StepFun Step Plan (Global)","npm":"@ai-sdk/openai-compatible","models":{"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":65536},"updated":"2026-09-20"},"step-3.5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":256000,"output":256000},"updated":"2026-04-02"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"updated":"2026-05-29"},"step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":256000},"updated":"2026-02-13"}}},"nebius":{"name":"Nebius Token Factory","npm":"@ai-sdk/openai-compatible","models":{"reflection/beam":{"name":"Beam 1.0 501B A23B","limit":{"context":1048576,"output":131072},"cost":{"input":0.25,"output":1,"cache_read":0.25},"updated":"2026-10-16"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4},"updated":"2026-06-13"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1024000,"output":1024000},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1024000,"output":1024000},"cost":{"input":0.15,"output":0.5,"cache_read":0.15},"updated":"2026-08-26"},"openai/gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.18,"reasoning":0.6},"updated":"2026-02-04"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2},"updated":"2026-06-01"},"meta-models/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":1.25},"updated":"2026-10-15"},"nvidia/nemotron-3-super-120b-a12b":{"name":"Nemotron-3-Super-120B-A12B","limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":0.9},"updated":"2026-03-12"},"nvidia/Nemotron-3_5-Lightning":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":1048576,"output":1048576},"cost":{"input":0.06,"output":0.24,"cache_read":0.06},"updated":"2026-08-11"},"nvidia/Nemotron-3-Ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":3,"cache_read":1},"updated":"2026-06-04"},"nvidia/Nemotron-3.5-Super-VL":{"name":"Nemotron 3.5 Super VL 120B A12B","limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":0.9,"cache_read":0.3},"updated":"2026-10-15"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":3,"cache_read":0.45},"updated":"2026-08-14"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.6},"updated":"2025-10-04"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen3.5-397B-A17B","limit":{"context":262144,"output":8192},"cost":{"input":0.6,"output":3.6,"cache_read":0.06,"cache_write":0.75},"updated":"2026-05-07"},"Qwen/Qwen3-Embedding-8B":{"name":"Qwen3-Embedding-8B","limit":{"context":40960,"output":0},"cost":{"input":0.01,"output":0},"updated":"2026-02-04"},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"name":"Qwen3-30B-A3B-Instruct-2507","limit":{"context":262144,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-04"},"NousResearch/Hermes-4-405B":{"name":"Hermes-4-405B","limit":{"context":131072,"output":8192},"cost":{"input":1,"output":3,"cache_read":0.1,"cache_write":1.25,"reasoning":3},"updated":"2026-02-04"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":8000},"cost":{"input":0.95,"output":4},"updated":"2026-06-12"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":8000},"cost":{"input":3,"output":15,"cache_read":3},"updated":"2026-07-16"},"google/gemma-3-27b-it":{"name":"Gemma-3-27b-it","limit":{"context":110000,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-04"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1024000,"output":1024000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048000,"output":1048000},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.15},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":979000,"output":979000},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"updated":"2026-08-22"}}},"mistral":{"name":"Mistral","npm":"@ai-sdk/mistral","models":{"ministral-8b-2512":{"name":"Ministral 3 8B","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"updated":"2025-12-02"},"ministral-14b-2512":{"name":"Ministral 3 14B","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"updated":"2025-12-02"},"devstral-small-2505":{"name":"Devstral Small 2505","limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.3},"updated":"2025-05-07"},"voxtral-mini-tts-latest":{"name":"Voxtral Mini TTS (latest)","limit":{"context":0,"output":0},"updated":"2026-03-01"},"mistral-nemo":{"name":"Mistral Nemo","limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15},"updated":"2024-07-01"},"pixtral-large-latest":{"name":"Pixtral Large (latest)","limit":{"context":128000,"output":128000},"cost":{"input":2,"output":6},"updated":"2024-11-04"},"glm-5-2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-06-13"},"mistral-large-2411":{"name":"Mistral Large 2.1","limit":{"context":131072,"output":16384},"cost":{"input":2,"output":6},"updated":"2024-11-18"},"labs-devstral-small-2512":{"name":"Devstral Small 2","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2025-12-09"},"devstral-latest":{"name":"Devstral 2","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"magistral-medium-latest":{"name":"Magistral Medium (latest)","limit":{"context":262144,"output":16384},"cost":{"input":2,"output":5},"updated":"2025-03-20"},"open-mixtral-8x22b":{"name":"Mixtral 8x22B","limit":{"context":64000,"output":64000},"cost":{"input":2,"output":6},"updated":"2024-04-17"},"open-mistral-7b":{"name":"Mistral 7B","limit":{"context":8000,"output":8000},"cost":{"input":0.25,"output":0.25},"updated":"2023-09-27"},"devstral-medium-latest":{"name":"Devstral 2 (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-02"},"ministral-8b-latest":{"name":"Ministral 8B (latest)","limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":0.1},"updated":"2024-10-04"},"zai-glm-5-3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-08-14"},"mistral-small-2506":{"name":"Mistral Small 3.2","limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-06-20"},"mistral-small-latest":{"name":"Mistral Small (latest)","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"codestral-latest":{"name":"Codestral (latest)","limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-01-04"},"ministral-3b-2512":{"name":"Ministral 3 3B","limit":{"context":131072,"output":262144},"cost":{"input":0.1,"output":0.1,"cache_read":0.01},"updated":"2025-12-02"},"voxtral-small-2507":{"name":"Voxtral Small","limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.4},"updated":"2025-07-15"},"mistral-embed":{"name":"Mistral Embed","limit":{"context":8000,"output":3072},"cost":{"input":0.1,"output":0},"updated":"2023-12-11"},"mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"codestral-2508":{"name":"Codestral 25.08","limit":{"context":256000,"output":8192},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-07-30"},"devstral-small-2507":{"name":"Devstral Small","limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-10"},"ministral-3b-latest":{"name":"Ministral 3B (latest)","limit":{"context":131072,"output":128000},"cost":{"input":0.04,"output":0.04},"updated":"2024-10-04"},"zai-glm-5-2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-06-13"},"mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistral-medium-2604":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-04-29"},"mistral-large-4":{"name":"Mistral Large 4","limit":{"context":1048576,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"devstral-medium-2507":{"name":"Devstral Medium","limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2},"updated":"2025-07-10"},"devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"open-mixtral-8x7b":{"name":"Mixtral 8x7B","limit":{"context":32000,"output":32000},"cost":{"input":0.7,"output":0.7},"updated":"2023-12-11"},"pixtral-12b":{"name":"Pixtral 12B","limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15},"updated":"2024-09-01"},"labs-leanstral-1-5-1":{"name":"Leanstral 1.5","limit":{"context":262144,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-30"},"open-mistral-nemo":{"name":"Open Mistral Nemo","limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15},"updated":"2024-07-01"},"mistral-medium-2505":{"name":"Mistral Medium 3","limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2},"updated":"2025-05-07"},"mistral-medium-latest":{"name":"Mistral Medium (latest)","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-04-29"},"mistral-medium-2508":{"name":"Mistral Medium 3.1","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-08-12"},"voxtral-mini-latest":{"name":"Voxtral Mini (latest)","limit":{"context":0,"output":0},"updated":"2026-02-01"},"mistral-large-latest":{"name":"Mistral Large (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"voxtral-small-latest":{"name":"Voxtral Small (latest)","limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"}}},"togetherai":{"name":"Together AI","npm":"@ai-sdk/togetherai","models":{"LiquidAI/LFM2-24B-A2B":{"name":"LFM2-24B-A2B","limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12},"updated":"2026-02-25"},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"name":"Llama 3.3 70B","limit":{"context":131072,"output":131072},"cost":{"input":1.04,"output":1.04},"updated":"2026-07-02"},"reflection/Beam-1.0-501B-A23B":{"name":"Beam 1.0 501B A23B","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":1.2,"cache_read":0.04},"updated":"2026-10-16"},"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-07-02"},"zai-org/GLM-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2},"updated":"2026-02-11"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048575,"output":164000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-16"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048575,"output":400000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-02-12"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":250000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-12"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"meta-models/Muse-Spark-Open-816B-A42B":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"nvidia/NVIDIA-Nemotron-3.5-Super-VL":{"name":"Nemotron 3.5 Super VL 120B A12B","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.5,"cache_read":0.02},"updated":"2026-10-15"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":512300,"output":512300},"cost":{"input":0.6,"output":3.6,"cache_read":0.2},"updated":"2026-06-04"},"essentialai/Rnj-1-Instruct":{"name":"Rnj-1 Instruct","limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15},"updated":"2025-12-05"},"Qwen/Qwen3.7-Max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":500000},"cost":{"input":1.25,"output":3.75,"cache_read":0.125},"updated":"2026-07-02"},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"name":"Qwen 2.5 7B Instruct Turbo","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3},"updated":"2024-09-19"},"Qwen/Qwen3-Coder-Next-FP8":{"name":"Qwen3 Coder Next FP8","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.2},"updated":"2026-02-03"},"Qwen/Qwen3.6-Plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":500000},"cost":{"input":0.5,"output":3},"updated":"2026-04-30"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen3.5 397B A17B","limit":{"context":262144,"output":130000},"cost":{"input":0.6,"output":3.6,"cache_read":0.35},"updated":"2026-06-15"},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262144,"output":262144},"cost":{"input":2,"output":2},"updated":"2025-07-23"},"Qwen/Qwen3.5-9B":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25},"updated":"2026-03-03"},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{"name":"Qwen3 235B A22B Instruct 2507 FP8","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.6},"updated":"2025-07-25"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"thinkingmachines/Inkling":{"name":"Inkling","limit":{"context":524288,"output":131072},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"deepseek-ai/DeepSeek-V3":{"name":"DeepSeek-V3","limit":{"context":131072,"output":131072},"cost":{"input":1.25,"output":1.25},"updated":"2025-05-29"},"deepseek-ai/DeepSeek-V3-1":{"name":"DeepSeek V3.1","limit":{"context":131072,"output":131072},"cost":{"input":0.6,"output":1.7},"updated":"2025-08-21"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-R1":{"name":"DeepSeek-R1","limit":{"context":163839,"output":163839},"cost":{"input":3,"output":7},"updated":"2025-03-24"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"updated":"2026-08-22"}}},"xiaomi-token-plan-ams":{"name":"Xiaomi Token Plan (Europe)","npm":"@ai-sdk/openai-compatible","models":{"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2-tts":{"name":"MiMo-V2-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"mimo-v2.5-tts-voicedesign":{"name":"MiMo-V2.5-TTS-VoiceDesign","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.5-tts":{"name":"MiMo-V2.5-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2-pro":{"name":"MiMo-V2-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2.5-tts-voiceclone":{"name":"MiMo-V2.5-TTS-VoiceClone","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"}}},"deepinfra":{"name":"Deep Infra","npm":"@ai-sdk/deepinfra","models":{"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"name":"Llama 4 Maverick 17B FP8","limit":{"context":1048576,"output":16384},"cost":{"input":0.2,"output":0.8},"updated":"2025-04-05"},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"name":"Llama 3.3 70B Turbo","limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32},"updated":"2024-12-06"},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{"name":"Llama 4 Scout 17B","limit":{"context":327680,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-04-05"},"zai-org/GLM-4.6":{"name":"GLM-4.6","limit":{"context":202752,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.1},"updated":"2025-09-30"},"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":16384},"cost":{"input":1.05,"output":3.5,"cache_read":0.205},"updated":"2026-04-07"},"zai-org/GLM-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0.6,"output":2.08,"cache_read":0.12},"updated":"2026-02-12"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":32768},"cost":{"input":0.75,"output":2.4,"cache_read":0.14},"updated":"2026-06-13"},"zai-org/GLM-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":16384},"cost":{"input":0.4,"output":1.75,"cache_read":0.08},"updated":"2025-12-22"},"zai-org/GLM-4.7-Flash":{"name":"GLM-4.7-Flash","limit":{"context":202752,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":0.9,"output":4,"cache_read":0.2},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":16384},"cost":{"input":0.03,"output":0.14},"updated":"2025-08-05"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":16384},"cost":{"input":0.037,"output":0.17},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax M2.5","limit":{"context":196608,"output":131072},"cost":{"input":0.15,"output":1.15,"cache_read":0.03},"updated":"2026-02-12"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.056},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":196608,"output":131072},"cost":{"input":0.25,"output":1,"cache_read":0.05},"updated":"2026-03-18"},"XiaomiMiMo/MiMo-V2.5":{"name":"MiMo-V2.5","limit":{"context":262144,"output":16384},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"XiaomiMiMo/MiMo-V2.6-Pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"XiaomiMiMo/MiMo-V2.5-Pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":16384},"cost":{"input":1,"output":3,"cache_read":0.2},"updated":"2026-04-22"},"XiaomiMiMo/MiMo-V2.6-Flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{"name":"Llama 3.3 Nemotron Super 49B v1.5","limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":0.4},"updated":"2025-07-25"},"nvidia/Nemotron-3-Nano-30B-A3B":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025},"updated":"2025-12-15"},"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{"name":"Nemotron 3 Nano Omni 30B A3B Reasoning","limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":0.8},"updated":"2026-04-28"},"stepfun-ai/Step-3.7-Flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"stepfun-ai/Step-5-Preview":{"name":"Step 5 Preview","limit":{"context":1048576,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":1.1},"updated":"2025-09"},"Qwen/Qwen3-32B":{"name":"Qwen3 32B","limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28},"updated":"2025-04"},"Qwen/Qwen3.8-Max":{"name":"Qwen3.8 Max","limit":{"context":256000,"output":131072},"cost":{"input":1.65,"output":4.951,"cache_read":0.206},"updated":"2026-08-03"},"Qwen/Qwen3.5-27B":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.6},"updated":"2026-02-23"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":2.5,"cache_read":0.05},"updated":"2026-08-14"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B A3B","limit":{"context":262144,"output":81920},"cost":{"input":0.1,"output":0.95,"cache_read":0.1},"updated":"2026-04-01"},"Qwen/Qwen3.7-Max":{"name":"Qwen3.7 Max","limit":{"context":256000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"updated":"2026-05-21"},"Qwen/Qwen3-Max":{"name":"Qwen3 Max","limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24},"updated":"2025-09-23"},"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{"name":"Qwen3 Coder 480B A35B Instruct Turbo","limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1,"cache_read":0.1},"updated":"2025-07-23"},"Qwen/Qwen3.8-2.4T-A95B":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-08-12"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2},"updated":"2026-04-22"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-04"},"Qwen/Qwen3.8-Flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.113,"output":0.382,"cache_read":0.0141},"updated":"2026-08-26"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"updated":"2025-07-21"},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"updated":"2025-09-23"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen 3.5 397B A17B","limit":{"context":262144,"output":81920},"cost":{"input":0.45,"output":3,"cache_read":0.22},"updated":"2026-04-20"},"Qwen/Qwen3.5-122B-A10B":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.4},"updated":"2026-02-23"},"Qwen/Qwen3.5-9B":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15},"updated":"2026-02-23"},"Qwen/Qwen3-30B-A3B":{"name":"Qwen3 30B A3B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"updated":"2025-04-28"},"Qwen/Qwen3.5-35B-A3B":{"name":"Qwen 3.5 35B A3B","limit":{"context":262144,"output":81920},"cost":{"input":0.14,"output":1,"cache_read":0.05},"updated":"2026-04-20"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.68,"output":3.4,"cache_read":0.136},"updated":"2026-06-12"},"moonshotai/Kimi-K2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0.45,"output":2.25,"cache_read":0.07},"updated":"2026-01-27"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":16384},"cost":{"input":0.75,"output":3.5,"cache_read":0.15},"updated":"2026-04-21"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":2.85,"output":14.25,"cache_read":0.285},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-06-09"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"updated":"2025-03-12"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.4},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"updated":"2025-03-12"},"google/gemma-4-E4B-it":{"name":"Gemma 4 E4B IT","limit":{"context":131072,"output":8192},"cost":{"input":0.02,"output":0.1},"updated":"2026-04-02"},"google/gemma-4-26B-A4B-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"updated":"2026-04-02"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"updated":"2025-03-12"},"ByteDance/Seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"updated":"2026-02-14"},"ByteDance/Seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-02-14"},"ByteDance/Seed-2.0-pro":{"name":"Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-02-14"},"tencent/Hy4-preview":{"name":"Hy4 preview","limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/Hy3":{"name":"Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.13,"output":0.53,"cache_read":0.033},"updated":"2026-07-06"},"mistralai/Mistral-Small-24B-Instruct-2501":{"name":"Mistral Small 3","limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08},"updated":"2025-01-30"},"thinkingmachines/Inkling":{"name":"Inkling","limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"thinkingmachines/Inkling-Small":{"name":"Inkling Small","limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-09-01"},"deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":163840},"cost":{"input":0.24,"output":0.9,"cache_read":0.135},"updated":"2025-03-24"},"deepseek-ai/DeepSeek-V3":{"name":"DeepSeek-V3","limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89},"updated":"2024-12-26"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.06,"output":0.18,"cache_read":0.015},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V3.2":{"name":"DeepSeek-V3.2","limit":{"context":163840,"output":64000},"cost":{"input":0.26,"output":0.38,"cache_read":0.13},"updated":"2025-12-02"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek-R1-0528","limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"updated":"2025-05-28"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":16384},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":16384},"cost":{"input":0.09,"output":0.18,"cache_read":0.018},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4.1-Flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-10-17"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"updated":"2026-08-22"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek-V3.1","limit":{"context":163840,"output":8192},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"updated":"2025-08-21"}}},"bothub":{"name":"Bothub","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.44},"updated":"2026-08-26"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.1,"output":0.28},"updated":"2026-07-31"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.06,"output":0.37},"updated":"2026-07-09"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.72,"output":5.41},"updated":"2026-08-14"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.61,"output":4.84},"updated":"2026-08-22"},"nemotron-3-ultra-550b-a55b:free":{"name":"Nemotron 3 Ultra (free)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2},"updated":"2026-09-02"},"gemma-4-31b-it:free":{"name":"Gemma 4 31B IT (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"}}},"pareto":{"name":"Pareto Inference","npm":"@ai-sdk/openai-compatible","models":{"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.03,"output":0.1,"cache_read":0.006},"updated":"2026-08-26"}}},"mixlayer":{"name":"Mixlayer","npm":"@ai-sdk/openai-compatible","models":{"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.6},"updated":"2026-03-18"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B A10B","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3.2},"updated":"2026-03-18"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.4},"updated":"2026-03-18"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.4},"updated":"2026-03-18"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.3},"updated":"2026-03-18"}}},"cortecs":{"name":"Cortecs","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262000,"output":262000},"cost":{"input":0.668,"output":4.01},"updated":"2026-02-15"},"qwen3guard-gen-8b":{"name":"qwen3guard-gen-8b","limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0},"updated":"2026-02-04"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.35,"cache_read":0.018},"updated":"2026-08-26"},"ministral-8b-2512":{"name":"Ministral 3 8B 2512","limit":{"context":256000,"output":256000},"cost":{"input":0.179,"output":0.179,"cache_read":0.017},"updated":"2025-12-02"},"ministral-14b-2512":{"name":"Ministral 3 14B 2512","limit":{"context":256000,"output":256000},"cost":{"input":0.24,"output":0.24,"cache_read":0.022},"updated":"2025-12-02"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16000},"cost":{"input":2.659,"output":10.635,"cache_read":1.33},"updated":"2024-08-06"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.4,"output":11.999,"cache_read":0.12,"cache_write":3},"updated":"2026-09-29"},"apertus-70b":{"name":"Apertus 70B","limit":{"context":65536,"output":16384},"cost":{"input":1.393,"output":2.228},"updated":"2025-09-02"},"claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.113,"output":0.563,"cache_read":0.011,"cache_write":0.14},"updated":"2026-10-07"},"gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131000,"output":110000},"cost":{"input":0.099,"output":0.299},"updated":"2025-03-12"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156},"updated":"2025-08-07"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507","limit":{"context":262000,"output":262000},"cost":{"input":0.199,"output":0.598,"cache_read":0.018},"updated":"2025-07-21"},"nova-lite-v1":{"name":"Nova Lite 1.0","limit":{"context":300000,"output":10000},"cost":{"input":0.069,"output":0.275},"updated":"2024-12-05"},"mistral-large-4-0":{"name":"Mistral Large 4","limit":{"context":1000000,"output":262144},"cost":{"input":0.765,"output":2.351,"cache_read":0.079},"updated":"2026-10-06"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":1048576},"cost":{"input":0.082,"output":0.413,"cache_read":0.06},"updated":"2026-07-31"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.219,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"mistral-small-2503":{"name":"mistral-small-2503","limit":{"context":128000,"output":128000},"cost":{"input":0.111,"output":0.334},"updated":"2025-03-20"},"hermes-4-405b":{"name":"Hermes 4 405B","limit":{"context":128000,"output":128000},"cost":{"input":0.996,"output":2.989},"updated":"2025-08-26"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.272,"output":1.631,"cache_read":0.025,"cache_write":0.082},"updated":"2026-05-07"},"pixtral-12b-2409":{"name":"pixtral-12b-2409","limit":{"context":128000,"output":4096},"cost":{"input":0.223,"output":0.223},"updated":"2024-11-09"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":1048576},"cost":{"input":0.511,"output":2.045,"cache_read":0.154},"updated":"2026-08-14"},"qwen3-30b-a3b-instruct-2507":{"name":"qwen3-30b-a3b-instruct-2507","limit":{"context":262000,"output":262000},"cost":{"input":0.099,"output":0.299},"updated":"2025-07-28"},"qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":256000,"output":256000},"cost":{"input":0.167,"output":0.891},"updated":"2026-02-03"},"nvidia-nemotron-3-nano-30b-a3b":{"name":"nvidia-nemotron-3-nano-30b-a3b","limit":{"context":256000,"output":256000},"cost":{"input":0.06,"output":0.24},"updated":"2026-01-12"},"nemotron-nano-v2-12b":{"name":"nemotron-nano-v2-12b","limit":{"context":128000,"output":128000},"cost":{"input":0.24,"output":0.707},"updated":"2025-10-31"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.434,"output":1.704,"cache_read":0.134},"updated":"2025-04-14"},"qwen3-vl-235b-a22b":{"name":"qwen3-vl-235b-a22b","limit":{"context":256000,"output":256000},"cost":{"input":0.617,"output":3.119,"cache_read":0.052},"updated":"2026-01-13"},"mistral-small-3.2-24b-instruct-2506":{"name":"mistral-small-3.2-24b-instruct-2506","limit":{"context":131000,"output":131000},"cost":{"input":0.1,"output":0.312},"updated":"2025-05-26"},"qwen3guard-gen-0.6b":{"name":"qwen3guard-gen-0.6b","limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0},"updated":"2026-02-04"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.498,"cache_read":0.55,"cache_write":6.874},"updated":"2026-07-24"},"qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.625},"updated":"2026-08-12"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4.399,"output":21.998,"cache_read":0.44,"cache_write":5.5},"updated":"2026-07-09"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131000,"output":131000},"cost":{"input":0.724,"output":0.724},"updated":"2024-12-06"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262000,"output":32768},"cost":{"input":0.167,"output":0.557},"updated":"2026-04-17"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.7,"output":3.4,"cache_read":0.15},"updated":"2026-04-24"},"qwen2.5-vl-72b-instruct":{"name":"qwen2.5-vl-72b-instruct","limit":{"context":32000,"output":32000},"cost":{"input":1.014,"output":1.014},"updated":"2025-01-27"},"nova-micro-v1":{"name":"Nova Micro 1.0","limit":{"context":128000,"output":10000},"cost":{"input":0.04,"output":0.159},"updated":"2024-12-05"},"ministral-3b-2512":{"name":"Ministral 3 3B 2512","limit":{"context":256000,"output":256000},"cost":{"input":0.123,"output":0.123,"cache_read":0.012},"updated":"2025-12-02"},"voxtral-small-2507":{"name":"voxtral-small-2507","limit":{"context":32000,"output":32000},"cost":{"input":0.123,"output":0.368,"cache_read":0.012},"updated":"2026-02-02"},"deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":1048576},"cost":{"input":0.511,"output":1.534,"cache_read":0.128},"updated":"2026-10-17"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393216},"cost":{"input":0.201,"output":0.6,"cache_read":0.004},"updated":"2026-09-10"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.111,"output":0.434,"cache_read":0.056},"updated":"2025-04-14"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":1000000},"cost":{"input":0.9,"output":3.24,"cache_read":0.189},"updated":"2026-06-13"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":0.996,"output":4.982,"cache_read":0.099,"cache_write":1.186},"updated":"2025-10-15"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.06,"output":0.439,"cache_read":0.019},"updated":"2025-08-07"},"mistral-nemo-instruct-2407":{"name":"mistral-nemo-instruct-2407","limit":{"context":128000,"output":128000},"cost":{"input":0.145,"output":0.145,"cache_read":0.014},"updated":"2024-08-07"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262000,"output":81920},"cost":{"input":0.111,"output":0.557},"updated":"2026-04-02"},"pixtral-large-2502":{"name":"Pixtral Large (25.02)","limit":{"context":128000,"output":128000},"cost":{"input":1.993,"output":5.978},"updated":"2025-04-08"},"claude-opus4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5.313,"output":26.561,"cache_read":0.531,"cache_write":6.645},"updated":"2026-03-13"},"qwen3.8-flash-next":{"name":"Qwen3.8 Flash Next","limit":{"context":262144,"output":64000},"cost":{"input":0.201,"output":0.5,"cache_read":0.05},"updated":"2026-08-27"},"mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":256000},"cost":{"input":0.156,"output":0.625,"cache_read":0.016},"updated":"2026-03-16"},"codestral-2508":{"name":"Codestral 25.08","limit":{"context":256000,"output":256000},"cost":{"input":0.368,"output":1.103,"cache_read":0.037},"updated":"2025-07-30"},"qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262000,"output":262000},"cost":{"input":0.446,"output":3.008},"updated":"2026-04-22"},"minimax-m2":{"name":"MiniMax-M2","limit":{"context":400000,"output":196000},"cost":{"input":0.349,"output":1.405},"updated":"2025-10-27"},"minicpm-v-4.5":{"name":"minicpm-v-4.5","limit":{"context":32000,"output":32000},"cost":{"input":0.651,"output":1.097},"updated":"2026-06-02"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.5,"output":1.499,"cache_read":0.15},"updated":"2025-12-01"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.656,"output":3.3,"cache_read":0.18},"updated":"2026-06-12"},"gpt-oss-safeguard-120b":{"name":"GPT OSS Safeguard 120B","limit":{"context":128000,"output":128000},"cost":{"input":0.179,"output":0.697},"updated":"2025-10-29"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":16384,"output":16384},"cost":{"input":0.179,"output":0.697},"updated":"2025-04"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.898,"output":15.453,"cache_read":0.242},"updated":"2026-03-05"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":202752},"cost":{"input":1.384,"output":4.348,"cache_read":0.346},"updated":"2026-04-07"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.299,"output":2.491,"cache_read":0.029,"cache_write":0.097},"updated":"2025-06-17"},"claude-4-6-sonnet":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3.196,"output":15.94,"cache_read":0.32,"cache_write":3.999},"updated":"2026-03-13"},"mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":256000,"output":256000},"cost":{"input":0.613,"output":1.838,"cache_read":0.061},"updated":"2025-12-02"},"mistral-large-2402":{"name":"mistral-large-2402","limit":{"context":32000,"output":8192},"cost":{"input":4.284,"output":12.952},"updated":"2025-05-26"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.749,"cache_read":0.033,"cache_write":0.082},"updated":"2026-07-21"},"nova-2-lite":{"name":"Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.373,"output":3.144},"updated":"2025-12-01"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131000,"output":131000},"cost":{"input":0.045,"output":0.167},"updated":"2025-08-05"},"claude-opus4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5.313,"output":26.568,"cache_read":0.531,"cache_write":6.645},"updated":"2025-11-24"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":262144},"cost":{"input":0.179,"output":0.697,"cache_read":0.014},"updated":"2025-04"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038},"updated":"2026-08-13"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16000},"cost":{"input":0.159,"output":0.638,"cache_read":0.081},"updated":"2024-07-18"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":500000},"cost":{"input":0.1,"output":0.4,"cache_read":0.04},"updated":"2026-08-14"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.279,"output":2.192,"cache_read":0.056},"updated":"2025-08-07"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262000,"output":262000},"cost":{"input":0.223,"output":0.39},"updated":"2026-04-02"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":256000,"output":256000},"cost":{"input":0.475,"output":2.97,"cache_read":0.1},"updated":"2026-04-21"},"qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262000,"output":262000},"cost":{"input":0.111,"output":0.167},"updated":"2026-02-23"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038},"updated":"2026-07-21"},"claude-opus4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797},"updated":"2026-04-16"},"devstral-2512":{"name":"Devstral 2","limit":{"context":256000,"output":256000},"cost":{"input":0.478,"output":2.392,"cache_read":0.045},"updated":"2025-12-09"},"minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":196000,"output":196000},"cost":{"input":0.359,"output":1.435},"updated":"2025-12-23"},"claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4.399,"output":21.998,"cache_read":0.219,"cache_write":5.5},"updated":"2026-09-22"},"claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2.25,"output":11.249,"cache_read":0.225,"cache_write":2.813},"updated":"2026-09-28"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.12,"output":0.6,"cache_read":0.012,"cache_write":0.15},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.219,"cache_write":2.749},"updated":"2026-06-30"},"nova-pro-v1":{"name":"Nova Pro 1.0","limit":{"context":300000,"output":10000},"cost":{"input":0.918,"output":3.671},"updated":"2024-12-05"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":14.999},"updated":"2026-07-16"},"mistral-7b-instruct-v0.2":{"name":"mistral-7b-instruct-v0.2","limit":{"context":32000,"output":8192},"cost":{"input":0.159,"output":0.219},"updated":"2025-05-26"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.082,"cache_write":0.084},"updated":"2026-09-02"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131000,"output":131000},"cost":{"input":0.089,"output":0.446,"cache_read":0.01},"updated":"2025-08-05"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65535},"cost":{"input":1.495,"output":9.964,"cache_read":0.242,"cache_write":0.434},"updated":"2025-06-17"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":64000},"cost":{"input":2,"output":3.999,"cache_read":0.5},"updated":"2026-08-22"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156},"updated":"2025-11-13"},"mixtral-8x7B-instruct-v0.1":{"name":"Mixtral 8x7B Instruct v0.1","limit":{"context":32000,"output":4096},"cost":{"input":0.488,"output":0.758},"updated":"2023-12-11"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":1.649,"output":9.899,"cache_read":0.165,"cache_write":1},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.2,"output":13.199,"cache_read":0.219,"cache_write":2.749},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.4,"output":11.999,"cache_read":0.24,"cache_write":3},"updated":"2026-09-22"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2.192,"output":8.769,"cache_read":0.546},"updated":"2025-04-14"},"glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":203000,"output":203000},"cost":{"input":0.08,"output":0.478},"updated":"2026-01-19"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":196000,"output":196000},"cost":{"input":0.348,"output":1.39,"cache_read":0.075},"updated":"2026-02-12"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"claude-opus4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797},"updated":"2026-05-28"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65535},"cost":{"input":2.25,"output":11.249,"cache_read":0.113},"updated":"2026-10-13"},"mistral-medium-3.5":{"name":"mistral-medium-3.5","limit":{"context":256000,"output":256000},"cost":{"input":1.532,"output":7.843,"cache_read":0.154},"updated":"2026-04-30"},"claude-4-5-sonnet":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":2.989,"output":14.945,"cache_read":0.326,"cache_write":4.078},"updated":"2025-09-29"}}},"minimax-cn-coding-plan":{"name":"MiniMax Token Plan (minimax.cn)","npm":"@ai-sdk/anthropic","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-23"},"MiniMax-M3.1-Flash-Preview":{"name":"MiniMax-M3.1-Flash-Preview","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-27"},"MiniMax-M3.1-Flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-10-19"},"MiniMax-M2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-13"},"MiniMax-M2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-18"},"MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2025-10-27"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-25"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-18"}}},"vercel":{"name":"Vercel AI Gateway","npm":"@ai-sdk/gateway","models":{"bfl/flux-3-image-klein":{"name":"FLUX 3 Image Klein","limit":{"context":0,"output":0},"updated":"2026-10-15"},"bfl/flux-pro-1.1-ultra":{"name":"FLUX1.1 [pro] Ultra","limit":{"context":512,"output":0},"updated":"2024-11"},"bfl/flux-kontext-pro":{"name":"FLUX.1 Kontext Pro","limit":{"context":512,"output":0},"updated":"2025-06"},"bfl/flux-3-image":{"name":"FLUX 3 Image","limit":{"context":0,"output":0},"updated":"2026-10-05"},"bfl/flux-2-klein-4b":{"name":"FLUX.2 [klein] 4B","limit":{"context":0,"output":0},"updated":"2026-06-08"},"bfl/flux-2-flex":{"name":"FLUX.2 [flex]","limit":{"context":0,"output":0},"updated":"2026-06-08"},"bfl/flux-kontext-max":{"name":"FLUX.1 Kontext Max","limit":{"context":512,"output":0},"updated":"2025-06"},"bfl/flux-3-video":{"name":"Flux 3","limit":{"context":0,"output":0},"updated":"2026-08-04"},"bfl/flux-2-pro":{"name":"FLUX.2 [pro]","limit":{"context":67300,"output":67300},"updated":"2026-06-08"},"bfl/flux-pro-1.0-fill":{"name":"FLUX.1 Fill [pro]","limit":{"context":512,"output":0},"updated":"2024-10"},"bfl/flux-2-max":{"name":"FLUX.2 [max]","limit":{"context":67300,"output":67300},"updated":"2026-06-08"},"bfl/flux-2-klein-9b":{"name":"FLUX.2 [klein] 9B","limit":{"context":0,"output":0},"updated":"2026-06-08"},"bfl/flux-pro-1.1":{"name":"FLUX1.1 [pro]","limit":{"context":512,"output":0},"updated":"2024-10"},"prodia/flux-fast-schnell":{"name":"Flux Schnell","limit":{"context":512,"output":0},"updated":"2026-06-08"},"fireworks/ember-1":{"name":"Ember-1","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-23"},"mixedbread/toast-1":{"name":"Toast 1","limit":{"context":131000,"output":4000},"cost":{"input":0.3,"output":0.72,"cache_read":0.036},"updated":"2026-08-13"},"sakana/namazu":{"name":"Sakana Namazu","limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.15},"updated":"2026-08-03"},"sakana/fugu-ultra-v2":{"name":"Fugu Ultra v2","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-09-11"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"reflection/beam":{"name":"Beam 1.0","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-16"},"reflection/beam-free":{"name":"Beam 1.0 (Free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-16"},"minimax/minimax-h3":{"name":"MiniMax H3","limit":{"context":0,"output":0},"updated":"2026-10-04"},"minimax/minimax-m2":{"name":"MiniMax M2","limit":{"context":205000,"output":196608},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"minimax/minimax-m2.5-highspeed":{"name":"MiniMax M2.5 High Speed","limit":{"context":204800,"output":131000},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax M2.7 High Speed","limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m3.1-flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1000000,"output":524288},"cost":{"input":0,"output":0},"updated":"2026-10-19"},"minimax/minimax-m2.5":{"name":"MiniMax M2.5","limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax M3","limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-h3-max":{"name":"MiniMax H3 Max","limit":{"context":0,"output":0},"updated":"2026-08-27"},"minimax/minimax-m2.7":{"name":"Minimax M2.7","limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m2.1-lightning":{"name":"MiniMax M2.1 Lightning","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2025-10-27"},"spacexai/grok-imagine-image":{"name":"Grok Imagine Image","limit":{"context":0,"output":0},"updated":"2026-01-28"},"spacexai/grok-voice-think-fast-2.0":{"name":"Grok Voice Think Fast 2.0","limit":{"context":0,"output":0},"updated":"2026-07-29"},"spacexai/grok-4.20-non-reasoning-beta":{"name":"Grok 4.20 Beta Non-Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.4},"updated":"2026-03-11"},"spacexai/grok-stt":{"name":"Grok STT","limit":{"context":0,"output":0},"updated":"2026-03-16"},"spacexai/grok-4.20-reasoning-beta":{"name":"Grok 4.20 Beta Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-11"},"spacexai/grok-4.1-fast-reasoning":{"name":"Grok 4.1 Fast Reasoning","limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"spacexai/grok-4.20-multi-agent-beta":{"name":"Grok 4.20 Multi Agent Beta","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-11"},"spacexai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"spacexai/grok-4.1-fast-non-reasoning":{"name":"Grok 4.1 Fast Non-Reasoning","limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"spacexai/grok-imagine-video-1.5-lite":{"name":"Grok Imagine Video 1.5 Lite","limit":{"context":0,"output":0},"updated":"2026-10-01"},"spacexai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"spacexai/grok-tts":{"name":"Grok TTS","limit":{"context":0,"output":0},"updated":"2026-03-16"},"spacexai/grok-imagine-video":{"name":"Grok Imagine","limit":{"context":0,"output":0},"updated":"2026-01-28"},"spacexai/grok-4.20-non-reasoning":{"name":"Grok 4.20 Non-Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-10"},"spacexai/grok-imagine-video-1.5":{"name":"Grok Imagine Video 1.5","limit":{"context":0,"output":0},"updated":"2026-05-30"},"spacexai/grok-imagine-image-2.0":{"name":"Grok Imagine Image 2.0","limit":{"context":0,"output":0},"updated":"2026-08-07"},"spacexai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"spacexai/grok-voice-think-fast-1.0":{"name":"Grok Voice Think Fast 1.0","limit":{"context":0,"output":0},"updated":"2026-04-23"},"spacexai/grok-4.20-multi-agent":{"name":"Grok 4.20 Multi-Agent","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-10"},"spacexai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"spacexai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"spacexai/grok-4.20-reasoning":{"name":"Grok 4.20 Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-10"},"cohere/rerank-v4-pro":{"name":"Cohere Rerank 4 Pro","limit":{"context":32000,"output":32000},"updated":"2025-12-11"},"cohere/embed-v5.0-fast":{"name":"Embed 5 Fast","limit":{"context":128000,"output":0},"updated":"2026-09-30"},"cohere/command-a":{"name":"Command A","limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"cohere/embed-v4.0":{"name":"Embed v4.0","limit":{"context":128000,"output":1536},"updated":"2025-04-15"},"cohere/rerank-v4-fast":{"name":"Cohere Rerank 4 Fast","limit":{"context":32000,"output":32000},"updated":"2025-12-11"},"cohere/rerank-v3.5":{"name":"Cohere Rerank 3.5","limit":{"context":4096,"output":4096},"updated":"2024-12-02"},"cohere/embed-v5.0-pro":{"name":"Embed 5 Pro","limit":{"context":128000,"output":0},"updated":"2026-09-30"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"inference-net/schematron-v2-small":{"name":"Schematron V2 Small","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05},"updated":"2026-04-16"},"inference-net/schematron-v2-turbo":{"name":"Schematron V2 Turbo","limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03},"updated":"2026-04-16"},"inclusionai/ling-3.0-flash-fin":{"name":"Ling 3.0 Flash Fin","limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-03"},"inclusionai/ling-3.1-flash":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.06},"updated":"2026-09-29"},"inclusionai/ling-3.0-flash-sante":{"name":"Ling 3.0 Flash Sante","limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-04"},"inclusionai/ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL","limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-08"},"inclusionai/ling-3.0-flash":{"name":"Ling 3.0 Flash","limit":{"context":256000,"output":32000},"cost":{"input":0.021,"output":0.063,"cache_read":0.0042},"updated":"2026-08-06"},"openai/gpt-image-1":{"name":"GPT Image 1","limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"updated":"2025-04-24"},"openai/tts-1":{"name":"TTS-1","limit":{"context":0,"output":0},"updated":"2023-11-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.4-mini-fast":{"name":"GPT 5.4 Mini (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-03-17"},"openai/gpt-realtime-1.5":{"name":"GPT-Realtime-1.5","limit":{"context":0,"output":0},"cost":{"input":4,"output":16,"cache_read":0.4},"updated":"2026-02-23"},"openai/gpt-5.6-sol-fast":{"name":"GPT 5.6 Sol (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT 5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT 5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-4.1-nano-fast":{"name":"GPT-4.1 nano (Fast)","limit":{"context":1047576,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"updated":"2025-04-14"},"openai/tts-1-hd":{"name":"TTS-1 HD","limit":{"context":0,"output":0},"updated":"2023-11-06"},"openai/gpt-5.5":{"name":"GPT 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/text-embedding-3-large":{"name":"text-embedding-3-large","limit":{"context":8192,"output":1536},"updated":"2024-01-25"},"openai/gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-09-15"},"openai/gpt-5.1-thinking":{"name":"GPT 5.1 Thinking","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-6.1-sol-fast":{"name":"GPT-6.1 Sol (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-29"},"openai/text-embedding-3-small":{"name":"text-embedding-3-small","limit":{"context":8192,"output":1536},"updated":"2024-01-25"},"openai/gpt-4o-fast":{"name":"GPT-4o (Fast)","limit":{"context":128000,"output":16384},"cost":{"input":4.25,"output":17,"cache_read":2.125},"updated":"2024-08-06"},"openai/gpt-5.6-sol":{"name":"GPT 5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-6-astra-fast":{"name":"GPT-6 Astra (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":20,"output":100,"cache_read":2,"cache_write":25},"updated":"2026-09-04"},"openai/gpt-5.4-fast":{"name":"GPT 5.4 (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-03-05"},"openai/gpt-realtime-2.1":{"name":"gpt-realtime-2.1","limit":{"context":128000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4},"updated":"2026-07-06"},"openai/gpt-5.6-luna-fast":{"name":"GPT 5.6 Luna (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5},"updated":"2026-07-09"},"openai/o3-fast":{"name":"o3 (Fast)","limit":{"context":200000,"output":100000},"cost":{"input":3.5,"output":14,"cache_read":0.875},"updated":"2025-04-16"},"openai/gpt-realtime-2":{"name":"gpt-realtime-2","limit":{"context":0,"output":0},"cost":{"input":4,"output":24,"cache_read":0.4},"updated":"2026-05-07"},"openai/gpt-image-1-mini":{"name":"GPT Image 1 Mini","limit":{"context":0,"output":0},"cost":{"input":2,"output":8,"cache_read":0.2},"updated":"2025-10-06"},"openai/gpt-5.5-fast":{"name":"GPT 5.5 (Fast)","limit":{"context":1000000,"output":128000},"cost":{"input":12.5,"output":75,"cache_read":1.25},"updated":"2026-04-23"},"openai/gpt-5.2-pro":{"name":"GPT 5.2 ","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-6-luna-fast":{"name":"GPT-6 Luna (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1,"cache_read":0.02,"cache_write":0.25},"updated":"2026-09-22"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5 Turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-4o-mini-fast":{"name":"GPT-4o mini (Fast)","limit":{"context":128000,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125},"updated":"2024-07-18"},"openai/gpt-5.1-codex-max":{"name":"GPT 5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-oss-safeguard-120b":{"name":"GPT OSS Safeguard 120B","limit":{"context":128000,"output":16000},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-29"},"openai/gpt-5.4":{"name":"GPT 5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-live-1":{"name":"GPT-Live 1","limit":{"context":0,"output":0},"updated":"2026-09-10"},"openai/gpt-5.5-pro":{"name":"GPT 5.5 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-4o-mini-transcribe":{"name":"GPT-4o mini Transcribe","limit":{"context":0,"output":0},"cost":{"input":1.25,"output":5},"updated":"2024-03-13"},"openai/gpt-4.1-fast":{"name":"GPT-4.1 (Fast)","limit":{"context":1047576,"output":32768},"cost":{"input":3.5,"output":14,"cache_read":0.875},"updated":"2025-04-14"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":8192},"cost":{"input":0.03,"output":0.14},"updated":"2025-08-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-5.3-codex-fast":{"name":"GPT 5.3 Codex (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35},"updated":"2026-02-05"},"openai/whisper-1":{"name":"Whisper","limit":{"context":0,"output":0},"updated":"2022-09-21"},"openai/text-embedding-ada-002":{"name":"text-embedding-ada-002","limit":{"context":8192,"output":1536},"updated":"2022-12-15"},"openai/gpt-image-2":{"name":"GPT Image 2","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-04-21"},"openai/gpt-image-2.5-flare":{"name":"GPT Image 2.5 Flare","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"openai/gpt-realtime-mini":{"name":"GPT-Realtime mini","limit":{"context":0,"output":0},"cost":{"input":0.6,"output":2.4,"cache_read":0.06},"updated":"2025-10-10"},"openai/gpt-5.3-codex":{"name":"GPT 5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-5-mini-fast":{"name":"GPT-5 mini (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":0.45,"output":3.6,"cache_read":0.045},"updated":"2025-08-07"},"openai/gpt-realtime-whisper":{"name":"gpt-realtime-whisper","limit":{"context":0,"output":0},"updated":"2026-05-07"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-image-1.5":{"name":"GPT Image 1.5","limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"updated":"2025-11-25"},"openai/o3-pro":{"name":"o3 Pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2025-06-10"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5,"cache_read":0.1},"updated":"2025-08-05"},"openai/gpt-4o-transcribe":{"name":"GPT-4o Transcribe","limit":{"context":0,"output":0},"cost":{"input":2.5,"output":10},"updated":"2024-03-13"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-11-13"},"openai/gpt-oss-safeguard-20b":{"name":"gpt-oss-safeguard-20b","limit":{"context":128000,"output":16000},"cost":{"input":0.07,"output":0.2},"updated":"2025-10-29"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.1-codex":{"name":"GPT-5.1-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"openai/gpt-5.1-thinking-fast":{"name":"GPT 5.1 Thinking (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25},"updated":"2025-11-12"},"openai/gpt-5.4-nano":{"name":"GPT 5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT 5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/o4-mini-fast":{"name":"o4-mini (Fast)","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"openai/gpt-6-sol-fast":{"name":"GPT-6 Sol (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-09-22"},"openai/gpt-5.4-pro":{"name":"GPT 5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-5.6-terra-fast":{"name":"GPT 5.6 Terra (Fast)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.2-fast":{"name":"GPT 5.2 (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35},"updated":"2025-12-11"},"openai/gpt-4.1-mini-fast":{"name":"GPT-4.1 mini (Fast)","limit":{"context":1047576,"output":32768},"cost":{"input":0.7,"output":2.8,"cache_read":0.175},"updated":"2025-04-14"},"openai/gpt-image-2.5-sunburst":{"name":"GPT Image 2.5 Sunburst","limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"updated":"2026-09-08"},"openai/gpt-5-fast":{"name":"GPT-5 (Fast)","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25},"updated":"2025-08-07"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"meituan/longcat-2.5-preview":{"name":"LongCat 2.5 Preview","limit":{"context":1048576,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-26"},"meta/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-05"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":1048576},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/muse-image-1.0":{"name":"Muse Image 1.0","limit":{"context":0,"output":0},"updated":"2026-08-26"},"meta/llama-3.1-70b":{"name":"Llama 3.1 70B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.72,"output":0.72},"updated":"2024-07-23"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-08-10"},"meta/llama-3.1-8b":{"name":"Llama 3.1 8B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.22,"output":0.22},"updated":"2024-07-23"},"meta/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"meta/llama-3.3-70b":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-12-06"},"meta/llama-4-scout":{"name":"Llama-4-Scout-17B-16E-Instruct-FP8","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"meta/llama-4-maverick":{"name":"Llama-4-Maverick-17B-128E-Instruct-FP8","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"heygen/heygen-video-1":{"name":"HeyGen Video","limit":{"context":0,"output":0},"updated":"2026-10-09"},"stealth/cat-jam":{"name":"Cat Jam","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-15"},"stealth/glyph-cluster":{"name":"Glyph Cluster","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-10-07"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014},"updated":"2026-07-31"},"deepseek/deepseek-v3.1":{"name":"DeepSeek-V3.1","limit":{"context":163840,"output":128000},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"updated":"2025-08-21"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-fast":{"name":"DeepSeek V4.1 Flash Fast","limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":2.4,"cache_read":0.014},"updated":"2026-09-10"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":1048576},"cost":{"input":0.075,"output":0.3,"cache_read":0.0015},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.075,"output":0.3,"cache_read":0.0015},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":1048576},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.0068},"updated":"2026-09-01"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":8000},"cost":{"input":0.62,"output":1.85},"updated":"2025-12-01"},"deepseek/deepseek-v4.1-flash-1017-fast":{"name":"DeepSeek V4.1 Flash 1017 Fast","limit":{"context":1048576,"output":262144},"cost":{"input":0.6,"output":2.4,"cache_read":0.014},"updated":"2026-10-17"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.066},"updated":"2026-08-22"},"deepseek/deepseek-v3.2-thinking":{"name":"DeepSeek V3.2 Thinking","limit":{"context":128000,"output":8000},"cost":{"input":0.62,"output":1.85},"updated":"2025-12-01"},"deepseek/deepseek-r1":{"name":"DeepSeek-R1","limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"updated":"2025-05-29"},"amazon/nova-2-lite":{"name":"Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075},"updated":"2024-12-01"},"amazon/titan-embed-text-v2":{"name":"Titan Text Embeddings V2","limit":{"context":8192,"output":1536},"updated":"2024-04"},"amazon/nova-micro":{"name":"Nova Micro","limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"updated":"2024-12-03"},"amazon/nova-pro":{"name":"Nova Pro","limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"updated":"2024-12-03"},"amazon/nova-lite":{"name":"Nova Lite","limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"updated":"2024-12-03"},"inception/mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.024999999999999998},"updated":"2026-03-06"},"inception/mercury-2.5":{"name":"Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004},"updated":"2026-09-08"},"inception/mercury-coder-small":{"name":"Mercury Coder Small Beta","limit":{"context":32000,"output":16384},"cost":{"input":0.25,"output":1},"updated":"2025-02-26"},"nvidia/nemotron-3.5-lightning-free":{"name":"Nemotron 3.5 Lightning Free","limit":{"context":1000000,"output":65000},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"nvidia/nemotron-3.5-lightning":{"name":"Nemotron 3.5 Lightning 30B","limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b":{"name":"NVIDIA Nemotron 3 Super 120B A12B","limit":{"context":256000,"output":32000},"cost":{"input":0.15,"output":0.65},"updated":"2026-03-11"},"nvidia/nemotron-nano-12b-v2-vl":{"name":"Nvidia Nemotron Nano 12B V2 VL","limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.6},"updated":"2025-10-28"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra","limit":{"context":1000000,"output":65000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-04"},"nvidia/nemotron-nano-9b-v2":{"name":"Nvidia Nemotron Nano 9B V2","limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.23},"updated":"2025-08-18"},"nvidia/nemotron-3.5-super-vl":{"name":"NVIDIA Nemotron 3.5 Super VL","limit":{"context":1048576,"output":1048576},"cost":{"input":0.2,"output":0.5,"cache_read":0.04},"updated":"2026-10-15"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025},"updated":"2025-12-15"},"fish-audio/drama-3":{"name":"Drama 3","limit":{"context":0,"output":0},"updated":"2026-10-13"},"fish-audio/s2-pro":{"name":"S2 Pro","limit":{"context":0,"output":0},"updated":"2026-03-09"},"fish-audio/s1":{"name":"S1","limit":{"context":0,"output":0},"updated":"2025-10-20"},"fish-audio/s2.1-pro":{"name":"S2.1 Pro","limit":{"context":0,"output":0},"updated":"2026-07-28"},"fish-audio/transcribe-1":{"name":"Transcribe-1","limit":{"context":0,"output":0},"updated":"2026-03-01"},"mistral/mistral-nemo":{"name":"Mistral Nemo","limit":{"context":131072,"output":131072},"cost":{"input":0.029,"output":0.03},"updated":"2024-07-01"},"mistral/mistral-large-3":{"name":"Mistral Large 3","limit":{"context":262144,"output":256000},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistral/mistral-embed":{"name":"Mistral Embed","limit":{"context":8192,"output":1536},"updated":"2023-12-11"},"mistral/mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"mistral/ministral-14b":{"name":"Ministral 14B","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"updated":"2025-12-01"},"mistral/codestral-embed":{"name":"Codestral Embed","limit":{"context":8192,"output":1536},"updated":"2025-05-28"},"mistral/mistral-small":{"name":"Mistral Small (latest)","limit":{"context":262144,"output":4000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"mistral/mistral-medium-3.5":{"name":"Mistral Medium Latest","limit":{"context":262144,"output":256000},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-05-21"},"mistral/ministral-8b":{"name":"Ministral 8B (latest)","limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":0.1},"updated":"2024-10-04"},"mistral/codestral":{"name":"Codestral (latest)","limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-01-04"},"mistral/ministral-3b":{"name":"Ministral 3B (latest)","limit":{"context":131072,"output":128000},"cost":{"input":0.04,"output":0.04},"updated":"2024-10-04"},"perplexity/pplx-embed-v1-4b":{"name":"Embed v1 4b","limit":{"context":32000,"output":0},"updated":"2026-02-26"},"perplexity/sonar":{"name":"Sonar","limit":{"context":127000,"output":8000},"cost":{"input":0.25,"output":2.5,"cache_write":0.0625},"updated":"2025-02-19"},"perplexity/pplx-embed-v1-0.6b":{"name":"Embed v1 0.6b","limit":{"context":32000,"output":0},"updated":"2026-02-26"},"poolside/laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1000000,"output":131072},"cost":{"input":0.09,"output":0.18,"cache_read":0.009},"updated":"2026-07-21"},"poolside/laguna-s-2.1-free":{"name":"Laguna S 2.1 Free","limit":{"context":256000,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-21"},"arcee-ai/trinity-large-thinking":{"name":"Trinity Large Thinking","limit":{"context":262100,"output":80000},"cost":{"input":0.25,"output":0.8},"updated":"2026-05-28"},"alibaba/wan-v3.0-video":{"name":"Wan v3.0 Video","limit":{"context":0,"output":0},"updated":"2026-08-23"},"alibaba/wan-v2.7-r2v":{"name":"Wan v2.7 Reference-to-Video","limit":{"context":0,"output":0},"updated":"2026-04-07"},"alibaba/qwen3-vl-instruct":{"name":"Qwen3 VL Instruct","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"updated":"2025-09-24"},"alibaba/wan-v2.6-i2v":{"name":"Wan v2.6 Image-to-Video","limit":{"context":0,"output":0},"updated":"2025-12-16"},"alibaba/qwen3.7-plus":{"name":"Qwen 3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"alibaba/qwen3.8-flash":{"name":"Qwen 3.8 Flash","limit":{"context":991000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"alibaba/wan-v2.6-i2v-flash":{"name":"Wan v2.6 Image-to-Video Flash","limit":{"context":0,"output":0},"updated":"2025-12-16"},"alibaba/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct","limit":{"context":262114,"output":262114},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"alibaba/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.2},"updated":"2026-02-03"},"alibaba/qwen3-next-80b-a3b-thinking":{"name":"Qwen3 Next 80B A3B Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"alibaba/qwen3-coder":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.22,"output":1.8,"cache_read":0.022},"updated":"2025-04"},"alibaba/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"alibaba/qwen3-max-thinking":{"name":"Qwen 3 Max Thinking","limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24},"updated":"2025-01"},"alibaba/wan-v2.7-t2v":{"name":"Wan v2.7 Text-to-Video","limit":{"context":0,"output":0},"updated":"2026-04-07"},"alibaba/qwen-3-30b":{"name":"Qwen3-30B-A3B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"updated":"2025-04"},"alibaba/qwen3-embedding-0.6b":{"name":"Qwen3 Embedding 0.6B","limit":{"context":32768,"output":32768},"updated":"2025-11-14"},"alibaba/wan-v2.6-t2v":{"name":"Wan v2.6 Text-to-Video","limit":{"context":0,"output":0},"updated":"2025-12-16"},"alibaba/qwen3.6-27b":{"name":"Qwen 3.6 27B","limit":{"context":256000,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-04-22"},"alibaba/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":991000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"alibaba/qwen-3-32b":{"name":"Qwen 3.32B","limit":{"context":128000,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2025-04"},"alibaba/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625},"updated":"2026-08-14"},"alibaba/qwen3.5-flash":{"name":"Qwen 3.5 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-23"},"alibaba/qwen3.7-flash":{"name":"Qwen 3.7 Flash","limit":{"context":991000,"output":64000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"alibaba/qwen3.8-omni-flash":{"name":"Qwen 3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"alibaba/qwen-3-14b":{"name":"Qwen3-14B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24},"updated":"2025-04"},"alibaba/qwen3.8-max-prime":{"name":"Qwen 3.8 Max Prime","limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5,"cache_write":5},"updated":"2026-09-23"},"alibaba/qwen3-embedding-8b":{"name":"Qwen3 Embedding 8B","limit":{"context":32768,"output":32768},"updated":"2025-06-05"},"alibaba/wan-v3.0-video-prime":{"name":"Wan v3.0 Video Prime","limit":{"context":0,"output":0},"updated":"2026-08-28"},"alibaba/qwen3.8-max":{"name":"Qwen 3.8 Max","limit":{"context":262144,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-07-19"},"alibaba/qwen3.5-plus":{"name":"Qwen 3.5 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5},"updated":"2026-02-16"},"alibaba/qwen3-embedding-4b":{"name":"Qwen3 Embedding 4B","limit":{"context":32768,"output":32768},"updated":"2025-06-05"},"alibaba/qwen3.6-plus":{"name":"Qwen 3.6 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"alibaba/qwen-3-235b":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.88},"updated":"2025-04"},"alibaba/wan-v2.6-r2v":{"name":"Wan v2.6 Reference-to-Video","limit":{"context":0,"output":0},"updated":"2025-12-16"},"alibaba/wan-v2.6-r2v-flash":{"name":"Wan v2.6 Reference-to-Video Flash","limit":{"context":0,"output":0},"updated":"2025-12-16"},"alibaba/wan-v2.5-t2v-preview":{"name":"Wan v2.5 Text-to-Video Preview","limit":{"context":0,"output":0},"updated":"2025-09-24"},"alibaba/qwen3-coder-30b-a3b":{"name":"Qwen 3 Coder 30B A3B Instruct","limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2025-04"},"alibaba/qwen3.7-max":{"name":"Qwen 3.7 Max","limit":{"context":991000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"moonshotai/kimi-k3-fast":{"name":"Kimi K3 Fast","limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-07-16"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"moonshotai/kimi-k2":{"name":"Kimi K2 Instruct","limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3},"updated":"2025-07-11"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshotai/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code High Speed","limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-opus-4.8-fast":{"name":"Claude Opus 4.8 (Fast)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-05-28"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5-fast":{"name":"Claude Opus 5 (Fast)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-07-24"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-5.5-fast":{"name":"Claude Opus 5.5 (Fast)","limit":{"context":1000000,"output":128000},"cost":{"input":8,"output":40,"cache_read":0.4,"cache_write":10},"updated":"2026-09-22"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"voyage/voyage-code-3":{"name":"voyage-code-3","limit":{"context":8192,"output":1536},"updated":"2024-09"},"voyage/voyage-3.5":{"name":"voyage-3.5","limit":{"context":8192,"output":1536},"updated":"2025-05-20"},"voyage/voyage-law-2":{"name":"voyage-law-2","limit":{"context":8192,"output":1536},"updated":"2024-03"},"voyage/rerank-2.5-lite":{"name":"Voyage Rerank 2.5 Lite","limit":{"context":32000,"output":32000},"updated":"2025-08-11"},"voyage/voyage-4-lite":{"name":"voyage-4-lite","limit":{"context":32000,"output":0},"updated":"2026-03-06"},"voyage/voyage-3.5-lite":{"name":"voyage-3.5-lite","limit":{"context":8192,"output":1536},"updated":"2025-05-20"},"voyage/voyage-3-large":{"name":"voyage-3-large","limit":{"context":8192,"output":1536},"updated":"2024-09"},"voyage/voyage-finance-2":{"name":"voyage-finance-2","limit":{"context":8192,"output":1536},"updated":"2024-03"},"voyage/voyage-4-large":{"name":"voyage-4-large","limit":{"context":32000,"output":0},"updated":"2026-03-06"},"voyage/voyage-code-2":{"name":"voyage-code-2","limit":{"context":8192,"output":1536},"updated":"2024-01"},"voyage/rerank-3-lite":{"name":"Voyage Rerank 3 Lite","limit":{"context":32000,"output":32000},"updated":"2026-09-30"},"voyage/voyage-4":{"name":"voyage-4","limit":{"context":32000,"output":0},"updated":"2026-03-06"},"voyage/rerank-2.5":{"name":"Voyage Rerank 2.5","limit":{"context":32000,"output":32000},"updated":"2025-08-11"},"voyage/rerank-3":{"name":"Voyage Rerank 3","limit":{"context":32000,"output":32000},"updated":"2026-09-30"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo V2.6 Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo V2.6 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":1050000,"output":131000},"cost":{"input":0.3045,"output":0.609,"cache_read":0.0028},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo M2.5","limit":{"context":1050000,"output":131100},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"name":"MiMo V2.6 Pro UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"updated":"2026-09-21"},"callstack/apex":{"name":"Apex","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.2},"updated":"2026-10-08"},"google/gemini-3.8-live-extended-thinking":{"name":"Gemini 3.8 Live Extended Thinking","limit":{"context":0,"output":0},"cost":{"input":0.75,"output":4.5},"updated":"2026-09-15"},"google/gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2026-05-28"},"google/gemini-3.8-live":{"name":"Gemini 3.8 Live","limit":{"context":0,"output":0},"cost":{"input":0.75,"output":4.5},"updated":"2026-09-15"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03},"updated":"2026-05-07"},"google/gemini-3-flash":{"name":"Gemini 3 Flash","limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-05-28"},"google/gemini-3.8-flash-lite-tts":{"name":"Gemini 3.8 Flash-Lite TTS","limit":{"context":0,"output":0},"cost":{"input":0.5,"output":6},"updated":"2026-09-23"},"google/gemini-nano-banana-2.1":{"name":"Gemini Nano Banana 2.1","limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-10-06"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-04-02"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"google/gemini-3.8-flash-tts":{"name":"Gemini 3.8 Flash TTS","limit":{"context":0,"output":0},"cost":{"input":0.5,"output":9},"updated":"2026-09-23"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.5-transcribe":{"name":"Gemini 3.5 Transcribe","limit":{"context":0,"output":0},"cost":{"input":2,"output":12},"updated":"2026-08-26"},"google/text-multilingual-embedding-002":{"name":"Text Multilingual Embedding 002","limit":{"context":8192,"output":1536},"updated":"2024-03"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1000000,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"google/veo-3.1-generate-001":{"name":"Veo 3.1","limit":{"context":0,"output":0},"updated":"2026-06-08"},"google/veo-3.0-generate-001":{"name":"Veo 3.0","limit":{"context":0,"output":0},"updated":"2026-06-08"},"google/gemini-omni-flash-preview":{"name":"Gemini Omni Flash Preview","limit":{"context":1000000,"output":57920},"cost":{"input":1.5,"output":9},"updated":"2026-06-30"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"google/veo-3.1-lite-generate-001":{"name":"Veo 3.1 Lite Generate","limit":{"context":0,"output":0},"updated":"2026-04-02"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-07-21"},"google/gemini-3.1-flash-image-preview":{"name":"Gemini 3.1 Flash Image Preview (Nano Banana 2)","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2026-02-26"},"google/gemini-embedding-001":{"name":"Gemini Embedding 001","limit":{"context":8192,"output":1536},"updated":"2025-05-20"},"google/gemini-3.5-transcribe-live":{"name":"Gemini 3.5 Transcribe Live","limit":{"context":0,"output":0},"updated":"2026-08-26"},"google/veo-3.0-fast-generate-001":{"name":"Veo 3.0 Fast Generate","limit":{"context":0,"output":0},"updated":"2026-06-08"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1000000,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"google/gemini-3.1-flash-lite-image":{"name":"Gemini 3.1 Flash Lite Image (Nano Banana 2 Lite)","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5,"cache_read":0.03},"updated":"2026-06-30"},"google/text-embedding-005":{"name":"Text Embedding 005","limit":{"context":8192,"output":1536},"updated":"2024-08"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"google/gemini-2.5-flash-image":{"name":"Nano Banana (Gemini 2.5 Flash Image)","limit":{"context":32768,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-08-26"},"google/veo-3.1-fast-generate-001":{"name":"Veo 3.1 Fast Generate","limit":{"context":0,"output":0},"updated":"2026-06-08"},"google/gemini-embedding-2":{"name":"Gemini Embedding 2","limit":{"context":0,"output":0},"updated":"2026-04-22"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"morph/morph-v3-large":{"name":"Morph v3 Large","limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9},"updated":"2024-08-15"},"morph/morph-v3-fast":{"name":"Morph v3 Fast","limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2},"updated":"2024-08-15"},"bytedance/seedream-4.5":{"name":"Seedream 4.5","limit":{"context":0,"output":0},"updated":"2025-11-28"},"bytedance/seedance-v1.0-pro-fast":{"name":"Seedance v1.0 Pro Fast","limit":{"context":0,"output":0},"updated":"2025-10-31"},"bytedance/seedance-2.0-fast":{"name":"Seedance 2.0 Fast","limit":{"context":0,"output":0},"updated":"2026-04-14"},"bytedance/seedance-v1.5-pro":{"name":"Seedance v1.5 Pro","limit":{"context":0,"output":0},"updated":"2025-12-16"},"bytedance/seed-1.6":{"name":"Seed 1.6","limit":{"context":256000,"output":32000},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-09"},"bytedance/seed-1.8":{"name":"Seed 1.8","limit":{"context":256000,"output":32768},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-10"},"bytedance/seedance-2.0-mini":{"name":"Seedance 2.0 Mini","limit":{"context":0,"output":0},"updated":"2026-06-22"},"bytedance/seedream-5.0-pro":{"name":"Seedream 5.0 Pro","limit":{"context":0,"output":0},"updated":"2026-07-11"},"bytedance/seedance-2.0":{"name":"Seedance 2.0","limit":{"context":0,"output":0},"updated":"2026-04-14"},"bytedance/seed-2.1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.5,"cache_read":0.1},"updated":"2026-06-23"},"bytedance/seedream-4.0":{"name":"Seedream 4.0","limit":{"context":0,"output":0},"updated":"2025-08-28"},"bytedance/seedance-v1.0-pro":{"name":"Seedance v1.0 Pro","limit":{"context":0,"output":0},"updated":"2025-06-11"},"bytedance/seedance-2.5":{"name":"Seedance 2.5","limit":{"context":0,"output":0},"updated":"2026-08-07"},"bytedance/seedream-5.0-lite":{"name":"Seedream 5.0 Lite","limit":{"context":0,"output":0},"updated":"2026-01-28"},"klingai/kling-v2.5-turbo-i2v":{"name":"Kling v2.5 Turbo Image-to-Video","limit":{"context":0,"output":0},"updated":"2025-09-23"},"klingai/kling-v2.5-turbo-t2v":{"name":"Kling v2.5 Turbo Text-to-Video","limit":{"context":0,"output":0},"updated":"2025-09-23"},"klingai/kling-v2.6-i2v":{"name":"Kling v2.6 Image-to-Video","limit":{"context":0,"output":0},"updated":"2025-12-21"},"klingai/kling-v2.6-motion-control":{"name":"Kling v2.6 Motion Control","limit":{"context":0,"output":0},"updated":"2025-12-21"},"klingai/kling-v3.0-i2v":{"name":"Kling v3.0 Image-to-Video","limit":{"context":0,"output":0},"updated":"2026-02-05"},"klingai/kling-v2.6-t2v":{"name":"Kling v2.6 Text-to-Video","limit":{"context":0,"output":0},"updated":"2025-12-21"},"klingai/kling-v3.0-t2v":{"name":"Kling v3.0 Text-to-Video","limit":{"context":0,"output":0},"updated":"2026-02-05"},"klingai/kling-v3.0-motion-control":{"name":"Kling v3.0 Motion Control","limit":{"context":0,"output":0},"updated":"2026-03-04"},"zai/glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1000000,"output":131000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai/glm-4.7-flashx":{"name":"GLM 4.7 FlashX","limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"zai/glm-5.3":{"name":"GLM 5.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-08-14"},"zai/glm-5v-turbo":{"name":"GLM 5V Turbo","limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"zai/glm-5.3-fast":{"name":"GLM 5.3 Fast","limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21},"updated":"2026-08-14"},"zai/glm-5.2":{"name":"GLM 5.2","limit":{"context":1000000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"updated":"2026-06-13"},"zai/glm-4.7":{"name":"GLM 4.7","limit":{"context":200000,"output":120000},"cost":{"input":0.6,"output":2.2},"updated":"2025-12-22"},"zai/glm-5.1":{"name":"GLM 5.1","limit":{"context":202800,"output":64000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai/glm-5-turbo":{"name":"GLM 5 Turbo","limit":{"context":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"zai/glm-5.2-fast":{"name":"GLM 5.2 Fast","limit":{"context":1000000,"output":128000},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"updated":"2026-06-13"},"zai/glm-5.3-flashx":{"name":"GLM 5.3 FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075},"updated":"2026-08-26"},"zai/glm-4.6":{"name":"GLM 4.6","limit":{"context":200000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"zai/glm-4.5-air":{"name":"GLM 4.5 Air","limit":{"context":128000,"output":96000},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"updated":"2025-07-28"},"zai/glm-4.5v":{"name":"GLM 4.5V","limit":{"context":66000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"zai/glm-5":{"name":"GLM-5","limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2},"updated":"2026-02-12"},"zai/glm-4.7-flash":{"name":"GLM 4.7 Flash","limit":{"context":200000,"output":131000},"cost":{"input":0.07,"output":0.4},"updated":"2026-01-19"},"zai/glm-4.5":{"name":"GLM 4.5","limit":{"context":128000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"quiverai/arrow-2":{"name":"Arrow 2","limit":{"context":131072,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-09-16"},"quiverai/arrow-2-telos":{"name":"Arrow 2 Telos","limit":{"context":131072,"output":65536},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"updated":"2026-09-16"},"topaz/proteus":{"name":"Proteus","limit":{"context":0,"output":0},"updated":"2026-10-06"},"topaz/wonder-3.5":{"name":"Wonder 3.5","limit":{"context":0,"output":0},"updated":"2026-10-06"},"topaz/starlight-precise-2.6":{"name":"Starlight Precise 2.6","limit":{"context":0,"output":0},"updated":"2026-10-06"},"interfaze/interfaze-beta":{"name":"Interfaze Beta","limit":{"context":1000000,"output":32000},"cost":{"input":1.5,"output":3.5},"updated":"2026-04-29"},"tencent/hy-mt2-plus":{"name":"Tencent Hy-MT2-Plus","limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295},"updated":"2026-06-12"},"tencent/hy4-preview":{"name":"Tencent Hy4 Preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/hy-mt2-pro":{"name":"Tencent Hy-MT2-Pro","limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295},"updated":"2026-05-21"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"tencent/hy-mt2-lite":{"name":"Tencent Hy-MT2-Lite","limit":{"context":8000,"output":4000},"cost":{"input":0.044,"output":0.177},"updated":"2026-06-12"},"elorian/glimpse":{"name":"Glimpse","limit":{"context":220000,"output":4096},"cost":{"input":0.6,"output":3,"cache_read":0.06},"updated":"2026-10-16"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":1000000,"output":1000000},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"microsoft/mai-image-2.6-flash":{"name":"MAI-Image-2.6-Flash","limit":{"context":0,"output":0},"cost":{"input":1.75,"output":19},"updated":"2026-10-13"},"microsoft/mai-voice-2":{"name":"MAI-Voice-2","limit":{"context":0,"output":0},"updated":"2026-06-02"},"microsoft/mai-image-2.6":{"name":"MAI-Image-2.6","limit":{"context":0,"output":0},"cost":{"input":5,"output":38},"updated":"2026-10-13"},"microsoft/mai-transcribe-2":{"name":"MAI-Transcribe 2","limit":{"context":0,"output":0},"updated":"2026-09-03"},"microsoft/mai-voice-2.1":{"name":"MAI-Voice-2.1","limit":{"context":0,"output":0},"updated":"2026-10-01"},"microsoft/mai-transcribe-2-streaming":{"name":"MAI-Transcribe-2-Streaming","limit":{"context":0,"output":0},"updated":"2026-10-01"},"microsoft/mai-voice-2-flash":{"name":"MAI-Voice-2-Flash","limit":{"context":0,"output":0},"updated":"2026-07-23"},"microsoft/mai-voice-2.1-flash":{"name":"MAI-Voice-2.1-Flash","limit":{"context":0,"output":0},"updated":"2026-10-01"},"recraft/recraft-v2":{"name":"Recraft V2","limit":{"context":512,"output":0},"updated":"2024-03"},"recraft/recraft-v4-pro":{"name":"Recraft V4 Pro","limit":{"context":0,"output":0},"updated":"2026-02-17"},"recraft/recraft-v4.1-utility":{"name":"Recraft V4.1 Utility","limit":{"context":0,"output":0},"updated":"2026-05-14"},"recraft/recraft-v4.1":{"name":"Recraft V4.1","limit":{"context":0,"output":0},"updated":"2026-05-14"},"recraft/recraft-v3":{"name":"Recraft V3","limit":{"context":512,"output":0},"updated":"2024-10"},"recraft/recraft-v4.1-utility-pro":{"name":"Recraft V4.1 Utility Pro","limit":{"context":0,"output":0},"updated":"2026-05-14"},"recraft/recraft-v4.1-flash":{"name":"Recraft V4.1 Flash","limit":{"context":0,"output":0},"updated":"2026-09-23"},"recraft/recraft-v4.1-pro":{"name":"Recraft V4.1 Pro","limit":{"context":0,"output":0},"updated":"2026-05-14"},"recraft/recraft-v4":{"name":"Recraft V4","limit":{"context":0,"output":0},"updated":"2026-02-17"},"liquid/lfm2.5-24b-a2b":{"name":"LFM2.5-24B-A2B","limit":{"context":128000,"output":8200},"cost":{"input":0.05,"output":0.7,"cache_read":0.025},"updated":"2026-10-13"}}},"sarvam":{"name":"Sarvam AI","npm":"@ai-sdk/openai-compatible","models":{"sarvam-30b":{"name":"Sarvam-30B","limit":{"context":65536,"output":65536},"updated":"2026-03-06"},"sarvam-105b":{"name":"Sarvam-105B","limit":{"context":131072,"output":131072},"updated":"2026-03-06"}}},"google-vertex-anthropic":{"name":"Vertex (Anthropic)","npm":"@ai-sdk/google-vertex/anthropic","models":{"claude-opus-4-6@default":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-haiku-4-5@20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"claude-opus-4-7@default":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-sonnet-4@20250514":{"name":"Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"claude-haiku-5-5@default":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"claude-sonnet-5@default":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"claude-opus-5-5@default":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5@20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"claude-opus-4-8@default":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"claude-opus-4-1@20250805":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"claude-fable-5@default":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-sonnet-5-5@default":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"claude-fable-5-1@default":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"claude-opus-4@20250514":{"name":"Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"claude-sonnet-4-6@default":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-sonnet-4-5@20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"claude-opus-5@default":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"}}},"llmtech":{"name":"LLM Tech","npm":"@ai-sdk/openai-compatible","models":{"nvidia/Qwen3.8-27B-NVFP4":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2.09,"cache_read":0.04},"updated":"2026-08-14"}}},"lmstudio":{"name":"LMStudio","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"qwen/qwen3-coder-30b":{"name":"Qwen3 Coder 30B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-07-23"},"qwen/qwen3-30b-a3b-2507":{"name":"Qwen3 30B A3B 2507","limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"updated":"2025-07-30"}}},"ofox":{"name":"Ofox","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5-lightning":{"name":"MiniMax-M2.5 Lightning","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"minimax/minimax-m2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-01"},"minimax/m2-her":{"name":"MiniMax-M2 Her","limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2},"updated":"2026-01-23"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m2.1-lightning":{"name":"MiniMax-M2.1 Lightning","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01},"updated":"2025-08-07"},"openai/gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":256000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":256000,"output":32768},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18},"updated":"2026-02-05"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":256000,"output":65536},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-11-13"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18},"updated":"2025-12-11"},"x-ai/grok-4.20":{"name":"Grok 4.20 (Reasoning)","limit":{"context":2000000,"output":128000},"cost":{"input":4,"output":12,"cache_read":0.4},"updated":"2026-03-09"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"x-ai/grok-4.1-fast":{"name":"Grok 4.1 Fast","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"bailian/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":256000,"output":64000},"cost":{"input":0.55,"output":3.5,"cache_read":0.55},"updated":"2026-02-15"},"bailian/qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":262144,"output":65536},"cost":{"input":2.15,"output":12.86,"cache_read":0.2,"cache_write":1.17},"updated":"2026-04-20"},"bailian/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"bailian/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"bailian/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"updated":"2025-09-11"},"bailian/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.29,"cache_read":0.29},"updated":"2026-02-23"},"bailian/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5},"updated":"2026-02-03"},"bailian/qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.22,"cache_read":0.0043,"cache_write":0.027},"updated":"2025-07-28"},"bailian/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.05,"cache_read":0.29},"updated":"2026-02-23"},"bailian/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.6,"output":3.6},"updated":"2026-04-22"},"bailian/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"bailian/qwen-vl-max":{"name":"Qwen-VL Max","limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.58,"cache_read":0.046},"updated":"2025-08-13"},"bailian/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.31},"updated":"2026-04-27"},"bailian/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1131072,"output":131072},"cost":{"input":0.45,"output":3.2,"cache_read":0.05,"cache_write":0.5625},"updated":"2026-08-14"},"bailian/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-23"},"bailian/qwen-turbo":{"name":"Qwen Turbo","limit":{"context":128000,"output":16384},"cost":{"input":0.05,"output":0.09,"cache_read":0.0086},"updated":"2025-04-28"},"bailian/qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.36,"output":1.43,"cache_read":0.072},"updated":"2025-09-23"},"bailian/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"bailian/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.4},"updated":"2026-02-16"},"bailian/qwen-max":{"name":"Qwen Max","limit":{"context":32768,"output":8192},"cost":{"input":0.35,"output":1.38,"cache_read":0.069},"updated":"2025-01-25"},"bailian/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"bailian/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.83,"cache_read":0.29},"updated":"2026-02-23"},"bailian/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.06,"cache_write":0.27},"updated":"2025-07-28"},"bailian/qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":9,"cache_read":0.2,"cache_write":1},"updated":"2025-07-23"},"bailian/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"deepseek/deepseek-v4-pro-0423":{"name":"DeepSeek V4 Pro 0423","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.15},"updated":"2026-04-23"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-07-31"},"deepseek/deepseek-v4-flash-0423":{"name":"DeepSeek V4 Flash 0423","limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51,"cache_read":0.028},"updated":"2026-04-23"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-09-01"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":32000},"cost":{"input":0.29,"output":0.43,"cache_read":0.06},"updated":"2025-12-01"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"volcengine/doubao-seed-character":{"name":"Seed Character","limit":{"context":256000,"output":256000},"cost":{"input":0.177,"output":0.884,"cache_read":0.024,"cache_write":0.0025},"updated":"2026-06-23"},"volcengine/doubao-seed-evolving":{"name":"Seed Evolving","limit":{"context":256000,"output":256000},"cost":{"input":0.884,"output":4.42,"cache_read":0.177,"cache_write":0.0025},"updated":"2026-06-23"},"volcengine/doubao-seed-1-6":{"name":"Seed 1.6","limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"updated":"2025-10-15"},"volcengine/doubao-seed-2.1-pro":{"name":"Seed 2.1 Pro","limit":{"context":256000,"output":256000},"cost":{"input":0.7072,"output":3.536,"cache_read":0.1416,"cache_write":0.002},"updated":"2026-06-23"},"volcengine/doubao-seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":256000,"output":32000},"cost":{"input":0.06,"output":0.56,"cache_read":0.02,"cache_write":0.0024},"updated":"2026-02-14"},"volcengine/doubao-seed-2.1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":256000,"output":256000},"cost":{"input":0.3536,"output":1.7696,"cache_read":0.068,"cache_write":0.0019},"updated":"2026-06-23"},"volcengine/doubao-seed-1-8":{"name":"Seed 1.8","limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"updated":"2025-12-28"},"volcengine/doubao-seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024},"updated":"2026-02-14"},"volcengine/doubao-seed-1-6-flash":{"name":"Seed 1.6 Flash","limit":{"context":256000,"output":32000},"cost":{"input":0.03,"output":0.22,"cache_read":0.0043},"updated":"2025-08-28"},"volcengine/doubao-seed-2.0-pro":{"name":"Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024},"updated":"2026-02-14"},"volcengine/doubao-seed-1-6-vision":{"name":"Seed 1.6 Vision","limit":{"context":256000,"output":32000},"cost":{"input":0.12,"output":1.15,"cache_read":0.023},"updated":"2025-08-15"},"volcengine/doubao-seed-2.0-lite":{"name":"Seed 2.0 Lite","limit":{"context":256000,"output":32000},"cost":{"input":0.13,"output":0.76,"cache_read":0.03,"cache_write":0.0024},"updated":"2026-02-14"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshotai/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1},"updated":"2026-05-07"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1},"updated":"2025-12-17"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":1},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":1},"updated":"2025-06-17"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083},"updated":"2026-07-21"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415},"updated":"2026-08-13"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":4.5},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083},"updated":"2026-05-19"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"z-ai/glm-4.7-flashx":{"name":"GLM-4.7-FlashX","limit":{"context":200000,"output":128000},"cost":{"input":0.072,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.4,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"z-ai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"z-ai/glm-5.3-flashx":{"name":"GLM-5.3-FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-09-18"},"z-ai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":256000,"output":64000},"cost":{"input":0.55,"output":3.5,"cache_read":0.55},"updated":"2026-02-15"},"qwen/qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":256000,"output":64000},"cost":{"input":2.15,"output":12.86,"cache_read":0.2,"cache_write":1.17},"updated":"2026-04-20"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1064000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.11,"output":0.39,"cache_read":0.011,"cache_write":0.14},"updated":"2026-08-26"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"updated":"2025-09-11"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.29,"cache_read":0.29},"updated":"2026-02-23"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":256000,"output":64000},"cost":{"input":0.2,"output":1.5},"updated":"2026-02-03"},"qwen/qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32000},"cost":{"input":0.022,"output":0.22,"cache_read":0.0043,"cache_write":0.027},"updated":"2025-07-28"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.05,"cache_read":0.29},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.43,"output":2.57},"updated":"2026-04-22"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"updated":"2026-09-02"},"qwen/qwen-vl-max":{"name":"Qwen-VL Max","limit":{"context":128000,"output":8000},"cost":{"input":0.23,"output":0.58,"cache_read":0.023},"updated":"2025-08-13"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.31},"updated":"2026-04-27"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1131072,"output":131072},"cost":{"input":0.5,"output":1.71,"cache_read":0.043,"cache_write":0.63},"updated":"2026-08-14"},"qwen/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-23"},"qwen/qwen-turbo":{"name":"Qwen Turbo","limit":{"context":128000,"output":16000},"cost":{"input":0.043,"output":0.09,"cache_read":0.0086},"updated":"2025-04-28"},"qwen/qwen3-max":{"name":"Qwen3 Max","limit":{"context":256000,"output":64000},"cost":{"input":0.36,"output":1.43,"cache_read":0.072},"updated":"2025-09-23"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"updated":"2026-08-03"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.4},"updated":"2026-02-16"},"qwen/qwen-max":{"name":"Qwen Max","limit":{"context":32000,"output":8000},"cost":{"input":0.35,"output":1.38,"cache_read":0.069},"updated":"2025-01-25"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":1.83,"cache_read":0.29},"updated":"2026-02-23"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":2.5,"cache_read":0.06,"cache_write":0.27},"updated":"2025-07-28"},"qwen/qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1000000,"output":64000},"cost":{"input":1.8,"output":9,"cache_read":0.2,"cache_write":1},"updated":"2025-07-23"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1064000,"output":64000},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"updated":"2026-05-21"}}},"perplexity":{"name":"Perplexity","npm":"@ai-sdk/perplexity","models":{"sonar-deep-research":{"name":"Perplexity Sonar Deep Research","limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-09-01"},"sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15},"updated":"2025-09-01"},"sonar-reasoning-pro":{"name":"Sonar Reasoning Pro","limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-09-01"},"sonar":{"name":"Sonar","limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1},"updated":"2025-09-01"}}},"poolside":{"name":"Poolside","npm":"@ai-sdk/openai-compatible","models":{"poolside/laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-21"},"poolside/laguna-xs-2.1":{"name":"Laguna XS 2.1","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-02"},"poolside/laguna-m.1":{"name":"Laguna M.1","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-13"}}},"groq":{"name":"Groq","npm":"@ai-sdk/groq","models":{"whisper-large-v3-turbo":{"name":"Whisper Large V3 Turbo","limit":{"context":0,"output":0},"updated":"2024-10-01"},"llama-3.1-8b-instant":{"name":"Llama 3.1 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.08},"updated":"2024-07-23"},"llama-3.3-70b-versatile":{"name":"Llama 3.3 70B","limit":{"context":131072,"output":32768},"cost":{"input":0.59,"output":0.79},"updated":"2024-12-06"},"whisper-large-v3":{"name":"Whisper","limit":{"context":0,"output":0},"updated":"2025-09-05"},"allam-2-7b":{"name":"ALLaM-2-7b","limit":{"context":4096,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-01-23"},"meta-llama/llama-prompt-guard-2-86m":{"name":"Prompt Guard 2 86M","limit":{"context":512,"output":512},"cost":{"input":0.04,"output":0.04},"updated":"2025-05-29"},"meta-llama/llama-prompt-guard-2-22m":{"name":"Llama Prompt Guard 2 22M","limit":{"context":512,"output":512},"cost":{"input":0.03,"output":0.03},"updated":"2025-05-29"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-09-25"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2025-10-21"},"openai/gpt-oss-safeguard-20b":{"name":"Safety GPT OSS 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3},"updated":"2026-06-29"},"canopylabs/orpheus-v1-english":{"name":"Canopy Labs Orpheus V1 English","limit":{"context":4000,"output":50000},"updated":"2025-12-19"},"canopylabs/orpheus-arabic-saudi":{"name":"Canopy Labs Orpheus Arabic Saudi","limit":{"context":4000,"output":50000},"updated":"2025-12-16"},"groq/compound-mini":{"name":"Compound Mini","limit":{"context":131072,"output":8192},"updated":"2025-09-04"},"groq/compound":{"name":"Compound","limit":{"context":131072,"output":8192},"updated":"2025-09-04"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":131072,"output":16384},"cost":{"input":0.6,"output":3,"cache_read":0.3},"updated":"2026-04-22"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":131042,"output":16384},"cost":{"input":0.8,"output":4},"updated":"2026-08-14"}}},"crossmodel":{"name":"CrossModel","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1024000,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.33},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.42},"updated":"2026-03-18"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"updated":"2026-04-23"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15},"updated":"2024-07-18"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"cache_write":1},"updated":"2026-04-16"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25},"updated":"2026-04-17"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-08-12"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"cache_write":2},"updated":"2026-07-08"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"updated":"2026-09-21"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.35,"output":4.05,"cache_read":0.045,"cache_write":1.35},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"updated":"2026-09-01"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"updated":"2026-04-24"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.47,"output":0.94,"cache_read":0.005,"cache_write":0.47},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.16,"output":0.32,"cache_read":0.004,"cache_write":0.16},"updated":"2026-09-22"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1000000,"output":128000},"cost":{"input":0.47,"output":0.94,"cache_read":0.005,"cache_write":0.47},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.16,"output":0.32,"cache_read":0.004,"cache_write":0.16},"updated":"2026-04-22"},"moonshot/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1},"updated":"2026-06-12"},"moonshot/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1},"updated":"2026-04-21"},"moonshot/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"updated":"2026-07-16"},"gemini/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.5},"updated":"2025-12-17"},"gemini/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.1},"updated":"2025-06-17"},"gemini/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"updated":"2025-06-17"},"gemini/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2},"updated":"2026-02-19"},"gemini/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"updated":"2026-07-21"},"gemini/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"updated":"2026-08-13"},"gemini/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"updated":"2026-07-21"},"gemini/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"updated":"2026-09-02"},"gemini/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25},"updated":"2025-06-17"},"gemini/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.5},"updated":"2026-05-19"},"gemini/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2},"updated":"2026-10-13"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0.15},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM-4.7","limit":{"context":200000,"output":128000},"cost":{"input":0.47,"output":2.16,"cache_read":0.1,"cache_write":0.47},"updated":"2025-12-22"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.8,"cache_read":0.2,"cache_write":1},"updated":"2026-04-07"},"z-ai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":3.7,"cache_read":0.18,"cache_write":0.9},"updated":"2026-03-16"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.16,"cache_write":0.6},"updated":"2026-02-12"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.96,"output":2.88,"cache_read":0.048,"cache_write":0.96},"updated":"2026-08-28"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":131072},"cost":{"input":0.16,"output":0.64,"cache_read":0.04,"cache_write":0.16},"updated":"2026-07-06"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.25,"cache_read":0.032,"cache_write":0.4},"updated":"2026-06-02"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.13,"output":0.43,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.19,"output":1.13,"cache_read":0.019,"cache_write":0.24},"updated":"2026-04-27"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.04,"output":0.13,"cache_read":0.01,"cache_write":0.04},"updated":"2026-07-15"},"qwen/qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.13,"output":0.43,"cache_read":0.016,"cache_write":0.13},"updated":"2026-09-17"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.88,"output":5.63,"cache_read":0.23,"cache_write":2.35},"updated":"2026-08-03"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.32,"output":1.88,"cache_read":0.032,"cache_write":0.4},"updated":"2026-04-02"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.88,"output":5.63,"cache_read":0.375,"cache_write":2.35},"updated":"2026-05-21"}}},"lilac":{"name":"Lilac","npm":"@ai-sdk/openai-compatible","models":{"zai-org/glm-5.2":{"name":"GLM 5.2","limit":{"context":524288,"output":524288},"cost":{"input":0.9,"output":3,"cache_read":0.27},"updated":"2026-06-13"},"minimaxai/minimax-m3":{"name":"MiniMax M3","limit":{"context":1048576,"output":1048576},"cost":{"input":0.28,"output":1.1,"cache_read":0.05},"updated":"2026-06-01"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.2},"updated":"2026-04-21"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262100,"output":262100},"cost":{"input":0.11,"output":0.35},"updated":"2026-04-02"}}},"kenari":{"name":"Kenari","npm":"@ai-sdk/openai-compatible","models":{"grok-imagine-image":{"name":"Grok Imagine Image","limit":{"context":16000,"output":0},"cost":{"input":0,"output":0},"updated":"2026-01-28"},"step-3-7-flash:free":{"name":"Step 3.7 Flash (Free)","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-04-16"},"whisper-large-v3-turbo":{"name":"Whisper Large v3 Turbo","limit":{"context":448,"output":448},"cost":{"input":0,"output":0},"updated":"2024-10-01"},"step-3-7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"mistral-large:free":{"name":"Mistral Large (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2025-12-02"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-05-28"},"glm-5-2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-06-13"},"glm-5-3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-24"},"nano-banana-2-lite":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":4096},"cost":{"input":0,"output":0},"updated":"2026-06-30"},"gpt-5-6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-09"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"mimo-v2-5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"glm-5-1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-04-07"},"gpt-5-4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-03-17"},"minimax-m2-7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"nano-banana-pro":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-05-28"},"gemini-3-1-flash-tts":{"name":"Gemini 3.1 Flash TTS Preview","limit":{"context":8192,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-04-15"},"deepseek-v4-flash:free":{"name":"DeepSeek V4 Flash (Free)","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"mimo-v2-5:free":{"name":"MiMo-V2.5 (Free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"grok-build-0-1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-04-16"},"gemini-3-1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-05-07"},"kimi-k2-6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-04-21"},"hy3:free":{"name":"Hy3 (Free)","limit":{"context":256000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-06"},"grok-4-5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0},"updated":"2026-07-08"},"gemini-2-5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-06-17"},"nemotron-3-super-120b-a12b:free":{"name":"Nemotron 3 Super 120B A12B (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"gpt-5-5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-04-23"},"minimax-m2-7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"qwen3-8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-03"},"gemini-3-5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-05-19"},"gpt-image-2":{"name":"GPT-Image-2","limit":{"context":272000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-04-21"},"nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"kimi-k2-7-code:free":{"name":"Kimi K2.7 Code (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-06-12"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"grok-imagine-image-2-0":{"name":"Grok Imagine Image 2.0","limit":{"context":8000,"output":0},"cost":{"input":0,"output":0},"updated":"2026-08-07"},"gpt-5-6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-09"},"mistral-medium-3-5:free":{"name":"Mistral Medium 3.5 (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-04-29"},"gpt-5-6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-09"},"deepseek-v4-1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-09-10"},"gemini-3-6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-07-21"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-06-30"},"mimo-v2-5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-07-16"},"glm-4-7-flash:free":{"name":"GLM-4.7-Flash (Free)","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01-19"},"grok-4-6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0},"updated":"2026-08-12"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-06"},"nano-banana-2":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-05-28"},"gemini-2-5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-06-17"},"kimi-k2-6:free":{"name":"Kimi K2.6 (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-04-21"},"kimi-k2-7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-06-12"},"gemini-3-7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-08-13"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0},"updated":"2026-06-01"},"glm-5-3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-14"},"gemini-3-1-pro":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-02-19"},"qwen3-7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-06-02"},"nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2025-12-15"}}},"abacus":{"name":"Abacus","npm":"@ai-sdk/openai-compatible","models":{"gpt-5.3-chat-latest":{"name":"GPT-5.3 Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-03-01"},"claude-opus-4-20250514":{"name":"Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75},"updated":"2025-05-14"},"gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"updated":"2026-06-09"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"claude-opus-4-1-20250805":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75},"updated":"2025-08-05"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-04-16"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1000000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"updated":"2025-09-29"},"grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast (Non-Reasoning)","limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5},"updated":"2025-11-17"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4},"updated":"2025-04-16"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"gpt-5-codex":{"name":"GPT-5-Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-09-15"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-07-24"},"claude-sonnet-4-20250514":{"name":"Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"updated":"2025-05-14"},"route-llm":{"name":"RouteLLM","limit":{"context":128000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-07-10"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"gpt-5.1-chat-latest":{"name":"GPT-5.1 Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-11-13"},"gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10},"updated":"2024-11-20"},"gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-05-28"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"kimi-k2-turbo-preview":{"name":"Kimi K2 Turbo Preview","limit":{"context":256000,"output":8192},"cost":{"input":0.15,"output":8},"updated":"2025-07-08"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"gpt-5.2-chat-latest":{"name":"GPT-5.2 Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-01-01"},"gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10},"updated":"2025-11-13"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1},"updated":"2026-03-01"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gemini-3-pro-image-preview":{"name":"Nano Banana Pro Preview","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-20"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2024-07-18"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":32768},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"gpt-5.3-codex-xhigh":{"name":"GPT-5.3 Codex XHigh","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-02-05"},"muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1000000,"output":32000},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18},"updated":"2026-02-05"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"grok-4-0709":{"name":"Grok 4","limit":{"context":256000,"output":16384},"cost":{"input":3,"output":15},"updated":"2025-07-09"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"updated":"2026-03-13"},"gemini-3.1-flash-image-preview":{"name":"Nano Banana 2 Preview","limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-02-26"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"grok-4-fast-non-reasoning":{"name":"Grok 4 Fast (Non-Reasoning)","limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5},"updated":"2025-07-09"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5},"updated":"2025-10-15"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":131072,"output":16384},"cost":{"input":1.2,"output":6},"updated":"2025-05-28"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-06-30"},"llama-3.3-70b-versatile":{"name":"Llama 3.3 70B Versatile","limit":{"context":128000,"output":32768},"cost":{"input":0.59,"output":0.79},"updated":"2024-12-06"},"mimo-v2-pro":{"name":"MiMo-V2-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2},"updated":"2026-03-18"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6},"updated":"2026-08-03"},"o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":40},"updated":"2025-06-10"},"qwen-2.5-coder-32b":{"name":"Qwen 2.5 Coder 32B","limit":{"context":128000,"output":8192},"cost":{"input":0.79,"output":0.79},"updated":"2024-11-11"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6},"updated":"2026-07-08"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-07-09"},"grok-code-fast-1":{"name":"Grok Code Fast 1","limit":{"context":256000,"output":16384},"cost":{"input":0.2,"output":1.5},"updated":"2025-09-01"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25},"updated":"2025-11-01"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"claude-3-7-sonnet-20250219":{"name":"Claude Sonnet 3.7","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"updated":"2025-02-19"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5},"updated":"2026-05-21"},"gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30},"updated":"2025-08-26"},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":1048576,"output":8192},"cost":{"input":0.14,"output":0.59},"updated":"2025-04-05"},"meta-llama/Meta-Llama-3.1-8B-Instruct":{"name":"Llama 3.1 8B Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.05},"updated":"2024-07-23"},"meta-llama/Meta-Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.59,"output":0.79},"updated":"2024-12-06"},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{"name":"Llama 3.1 405B Instruct Turbo","limit":{"context":128000,"output":4096},"cost":{"input":3.5,"output":3.5},"updated":"2024-07-23"},"zai-org/GLM-4.6":{"name":"GLM-4.6","limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2},"updated":"2025-09-30"},"zai-org/GLM-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":96000},"cost":{"input":0.6,"output":2.2},"updated":"2025-07-28"},"zai-org/GLM-5.1":{"name":"GLM-5.1","limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai-org/GLM-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2},"updated":"2026-02-12"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai-org/GLM-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2},"updated":"2025-12-22"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.08,"output":0.44},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-06-01"},"MiniMaxAI/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-18"},"deepseek/deepseek-v3.1":{"name":"DeepSeek V3.1","limit":{"context":128000,"output":8192},"cost":{"input":0.55,"output":1.66},"updated":"2025-01-20"},"Qwen/Qwen3-32B":{"name":"Qwen3 32B","limit":{"context":131072,"output":8192},"cost":{"input":0.09,"output":0.29},"updated":"2025-04"},"Qwen/Qwen2.5-72B-Instruct":{"name":"Qwen 2.5 72B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":0.38},"updated":"2024-09-19"},"Qwen/QwQ-32B":{"name":"QwQ 32B","limit":{"context":32768,"output":32768},"cost":{"input":0.4,"output":0.4},"updated":"2024-11-28"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":8192},"cost":{"input":0.32,"output":3.2},"updated":"2026-04-22"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"name":"Qwen3-Coder 480B-A35B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.29,"output":1.2},"updated":"2025-04"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B A22B Instruct","limit":{"context":262144,"output":8192},"cost":{"input":0.13,"output":0.6},"updated":"2025-07-01"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-04-21"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"thinkingmachines/Inkling":{"name":"Inkling","limit":{"context":262144,"output":131072},"cost":{"input":3.74,"output":9.36,"cache_read":0.748},"updated":"2026-07-15"},"deepseek-ai/DeepSeek-V3.1-Terminus":{"name":"DeepSeek V3.1 Terminus","limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":1},"updated":"2025-06-01"},"deepseek-ai/DeepSeek-V3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":0.4},"updated":"2025-06-15"},"deepseek-ai/DeepSeek-R1":{"name":"DeepSeek R1","limit":{"context":128000,"output":8192},"cost":{"input":3,"output":7},"updated":"2025-01-20"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":32768},"cost":{"input":1.74,"output":3.48,"cache_read":0.15},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"updated":"2026-04-24"}}},"crof":{"name":"CrofAI","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":262144},"cost":{"input":0.35,"output":1.75,"cache_read":0.07},"updated":"2026-02-15"},"glm-5.3-flash":{"name":"GLM 5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.07,"output":0.22,"cache_read":0.01},"updated":"2026-08-26"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash (New)","limit":{"context":1000000,"output":131072},"cost":{"input":0.08,"output":0.1,"cache_read":0.003},"updated":"2026-07-31"},"greg-rp":{"name":"Greg (Roleplay)","limit":{"context":229376,"output":229376},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-01-27"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0.4,"output":1.4,"cache_read":0.06},"updated":"2026-08-14"},"greg-2-super":{"name":"Greg 2 Super","limit":{"context":229376,"output":229376},"cost":{"input":1.5,"output":5,"cache_read":0.25},"updated":"2026-06-14"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":131072},"cost":{"input":0.35,"output":0.8,"cache_read":0.003},"updated":"2026-04-24"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.05,"cache_read":0.05},"updated":"2026-06-13"},"deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":131072},"cost":{"input":0.08,"output":0.2,"cache_read":0.007},"updated":"2026-09-01"},"qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.5,"cache_read":0.04},"updated":"2026-04-22"},"kimi-k3-eco":{"name":"Kimi K3 Eco","limit":{"context":1000000,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.1},"updated":"2026-07-16"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":163840},"cost":{"input":0.18,"output":0.35,"cache_read":0.04},"updated":"2025-07-22"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.55,"output":2.25,"cache_read":0.05},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":202752},"cost":{"input":0.45,"output":2.15,"cache_read":0.08,"cache_write":0},"updated":"2026-04-07"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.5,"cache_read":0.03},"updated":"2026-08-14"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"updated":"2026-04-02"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.99,"cache_read":0.05},"updated":"2026-04-21"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":0.8,"cache_read":0.003},"updated":"2026-04-22"},"qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":262144},"cost":{"input":0.04,"output":0.15,"cache_read":0.008},"updated":"2026-03-13"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.21,"cache_read":0.003},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":262144},"cost":{"input":2,"output":8,"cache_read":0.25},"updated":"2026-07-16"},"greg-1-mini":{"name":"Greg 1 Mini","limit":{"context":229376,"output":229376},"cost":{"input":0.07,"output":0.15,"cache_read":0.01},"updated":"2026-01-27"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro (0813)","limit":{"context":1000000,"output":131072},"cost":{"input":0.35,"output":0.8,"cache_read":0.01},"updated":"2026-08-22"},"greg-2-ultra":{"name":"Greg 2 Ultra","limit":{"context":229376,"output":229376},"cost":{"input":3,"output":10,"cache_read":0.5},"updated":"2026-06-14"}}},"cerebras":{"name":"Cerebras","npm":"@ai-sdk/cerebras","models":{"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":40960},"cost":{"input":0.35,"output":0.75},"updated":"2026-06-10"},"qwen-3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":131072,"output":40960},"cost":{"input":0.99,"output":1.49,"cache_read":0.99},"updated":"2026-09-03"}}},"orcarouter":{"name":"OrcaRouter","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-5-chat-latest":{"name":"GPT-5 Chat (latest)","limit":{"context":400000,"output":100000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.1-chat-latest":{"name":"GPT-5.1 Chat","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.2-chat-latest":{"name":"GPT-5.2 Chat","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0},"updated":"2023-11-06"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":100000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-4o-2024-05-13":{"name":"GPT-4o (2024-05-13)","limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"updated":"2024-05-13"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.17},"updated":"2025-08-05"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"updated":"2026-07-31"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"updated":"2026-09-01"},"deepseek/deepseek-v4-flash-free":{"name":"DeepSeek V4 Flash (free)","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06},"updated":"2026-08-22"},"deepseek/deepseek-reasoner":{"name":"DeepSeek Reasoner","limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.028},"updated":"2026-02-28"},"deepseek/deepseek-chat":{"name":"DeepSeek Chat","limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"updated":"2026-02-28"},"orcarouter/fusion-flash":{"name":"OrcaRouter Fusion Flash","limit":{"context":200000,"output":128000},"updated":"2026-06-15"},"orcarouter/fusion-mini":{"name":"OrcaRouter Fusion Mini","limit":{"context":1000000,"output":128000},"updated":"2026-06-15"},"orcarouter/auto":{"name":"OrcaRouter Auto","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-05-14"},"orcarouter/free":{"name":"OrcaRouter Free","limit":{"context":65536,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-08-27"},"orcarouter/fusion":{"name":"OrcaRouter Fusion","limit":{"context":1000000,"output":128000},"updated":"2026-06-15"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":10},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"kimi/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1,"cache_write":0},"updated":"2026-01"},"kimi/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"kimi/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"kimi/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3.3,"output":16.5,"cache_read":0.33},"updated":"2026-07-16"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-08-13"},"google/gemini-robotics-er-1.6-preview":{"name":"Gemini Robotics-ER 1.6 Preview","limit":{"context":131072,"output":65536},"cost":{"input":1,"output":5},"updated":"2026-04-14"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.33,"cache_read":0.0075},"updated":"2026-04-02"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38,"cache_read":0.02},"updated":"2026-04-02"},"google/gemini-flash-lite-latest":{"name":"Gemini Flash-Lite Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-07-21"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"updated":"2026-05-19"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.075,"output":0.25},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-12-22"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-04-07"},"z-ai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"z-ai/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"updated":"2025-07-28"},"z-ai/glm-5.3-flash-free":{"name":"GLM-5.3-Flash (free)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-08-26"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.26,"cache_write":0},"updated":"2026-02-12"},"z-ai/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"},"grok/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"grok/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"grok/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"tencent/hy3-free":{"name":"Hy3 (free)","limit":{"context":256000,"output":128000},"cost":{"input":0,"output":0},"updated":"2026-07-06"},"tencent/hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0.18,"output":0.59,"cache_read":0.059},"updated":"2026-07-06"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032},"updated":"2026-02-15"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.35,"output":1.42,"cache_read":0.071},"updated":"2026-06-02"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.115,"output":0.917},"updated":"2026-02-23"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.6},"updated":"2025-09-23"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.086,"output":0.688},"updated":"2026-02-23"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5},"updated":"2026-04-27"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.33,"output":2.4},"updated":"2026-08-14"},"qwen/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4},"updated":"2026-02-23"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen3-vl-235b-a22b-thinking":{"name":"Qwen3 VL 235B A22B Thinking","limit":{"context":131072,"output":40960},"cost":{"input":0.4,"output":4},"updated":"2025-09-23"},"qwen/qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434},"updated":"2025-09-23"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.115,"output":0.688,"reasoning":2.4},"updated":"2026-02-16"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.057,"output":0.459},"updated":"2026-02-23"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.563},"updated":"2026-05-21"}}},"alibaba":{"name":"Alibaba","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":262144,"output":65536},"cost":{"input":1.3,"output":7.8,"cache_read":0.13,"cache_write":1.625},"updated":"2026-04-20"},"qwen3-8b":{"name":"Qwen3 8B","limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.7,"reasoning":2.1},"updated":"2025-04"},"qwen2-5-vl-7b-instruct":{"name":"Qwen2.5-VL 7B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.05},"updated":"2024-09"},"qwen-mt-plus":{"name":"Qwen-MT Plus","limit":{"context":16384,"output":8192},"cost":{"input":2.46,"output":7.37},"updated":"2025-01"},"qwen3-coder-480b-a35b-instruct":{"name":"Qwen3-Coder 480B-A35B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":7.5},"updated":"2025-04"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":131072},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5},"updated":"2026-06-04"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.2,"output":0.4,"cache_read":0.04},"updated":"2026-07-31"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2,"reasoning":4},"updated":"2025-09-11"},"qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2},"updated":"2025-09"},"qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":6},"updated":"2025-09"},"qwen-vl-plus":{"name":"Qwen-VL Plus","limit":{"context":131072,"output":8192},"cost":{"input":0.21,"output":0.63},"updated":"2025-08-15"},"qwen2-5-vl-72b-instruct":{"name":"Qwen2.5-VL 72B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":2.8,"output":8.4},"updated":"2024-09"},"qwen3-vl-235b-a22b":{"name":"Qwen3-VL 235B-A22B","limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":2.8,"reasoning":8.4},"updated":"2025-04"},"qwen2-5-32b-instruct":{"name":"Qwen2.5 32B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.7,"output":2.8},"updated":"2024-09"},"qwen3-235b-a22b":{"name":"Qwen3 235B-A22B","limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4},"updated":"2025-04"},"qwen-omni-turbo":{"name":"Qwen-Omni Turbo","limit":{"context":32768,"output":2048},"cost":{"input":0.07,"output":0.27},"updated":"2025-03-26"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"qwq-plus":{"name":"QwQ Plus","limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":2.4},"updated":"2025-03-05"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28,"cache_write":0},"updated":"2026-06-13"},"qwen2-5-14b-instruct":{"name":"Qwen2.5 14B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4},"updated":"2024-09"},"qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4},"updated":"2025-07-28"},"qwen-plus-character-ja":{"name":"Qwen Plus Character (Japanese)","limit":{"context":8192,"output":512},"cost":{"input":0.5,"output":1.4},"updated":"2024-01"},"qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-04-22"},"qwen3-omni-flash-realtime":{"name":"Qwen3-Omni Flash Realtime","limit":{"context":65536,"output":16384},"cost":{"input":0.52,"output":1.99},"updated":"2025-09-15"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4},"updated":"2025-04"},"qwen-vl-max":{"name":"Qwen-VL Max","limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":3.2},"updated":"2025-08-13"},"qwen3-livetranslate-flash-realtime":{"name":"Qwen3-LiveTranslate Flash Realtime","limit":{"context":53248,"output":4096},"cost":{"input":10,"output":10},"updated":"2025-09-22"},"qwen2-5-7b-instruct":{"name":"Qwen2.5 7B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.175,"output":0.7},"updated":"2024-09"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"updated":"2026-04-27"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":2.25},"updated":"2025-04"},"qwen-omni-turbo-realtime":{"name":"Qwen-Omni Turbo Realtime","limit":{"context":32768,"output":2048},"cost":{"input":0.27,"output":1.07},"updated":"2025-05-08"},"qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"updated":"2026-02-23"},"qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.003,"cache_write":0.0375},"updated":"2026-07-15"},"qwen-vl-ocr":{"name":"Qwen-VL OCR","limit":{"context":34096,"output":4096},"cost":{"input":0.07,"output":0.16},"updated":"2025-04-13"},"qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"qwen-turbo":{"name":"Qwen Turbo","limit":{"context":1000000,"output":16384},"cost":{"input":0.05,"output":0.2,"reasoning":0.5},"updated":"2025-04-28"},"qwen3-omni-flash":{"name":"Qwen3-Omni Flash","limit":{"context":65536,"output":16384},"cost":{"input":0.43,"output":1.66},"updated":"2025-09-15"},"qvq-max":{"name":"QVQ Max","limit":{"context":131072,"output":8192},"cost":{"input":1.2,"output":4.8},"updated":"2025-03-25"},"qwen3-asr-flash":{"name":"Qwen3-ASR Flash","limit":{"context":53248,"output":4096},"cost":{"input":0.035,"output":0.035},"updated":"2025-09-08"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6},"updated":"2025-09-23"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen3-14b":{"name":"Qwen3 14B","limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4,"reasoning":4.2},"updated":"2025-04"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4},"updated":"2026-02-16"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"qwen-max":{"name":"Qwen Max","limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4},"updated":"2025-01-25"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"qwen2-5-72b-instruct":{"name":"Qwen2.5 72B Instruct","limit":{"context":131072,"output":8192},"cost":{"input":1.4,"output":5.6},"updated":"2024-09"},"qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5},"updated":"2025-07-28"},"qwen-mt-turbo":{"name":"Qwen-MT Turbo","limit":{"context":16384,"output":8192},"cost":{"input":0.16,"output":0.49},"updated":"2025-01"},"qwen3-vl-30b-a3b":{"name":"Qwen3-VL 30B-A3B","limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"reasoning":2.4},"updated":"2025-04"},"qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":5},"updated":"2025-07-23"},"qwen2-5-omni-7b":{"name":"Qwen2.5-Omni 7B","limit":{"context":32768,"output":2048},"cost":{"input":0.1,"output":0.4},"updated":"2024-12"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"reasoning":4.8},"updated":"2025-09-23"}}},"minimax-coding-plan":{"name":"MiniMax Token Plan (minimax.io)","npm":"@ai-sdk/anthropic","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-23"},"MiniMax-M3.1-Flash-Preview":{"name":"MiniMax-M3.1-Flash-Preview","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-27"},"MiniMax-M3.1-Flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-10-19"},"MiniMax-M2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-13"},"MiniMax-M2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-18"},"MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"updated":"2025-10-27"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-25"},"MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-18"}}},"engy":{"name":"engy","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":327680,"output":32768},"cost":{"input":0.135,"output":0.45,"cache_read":0.027},"updated":"2026-08-26"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":128000},"cost":{"input":0.045,"output":0.09,"cache_read":0.009},"updated":"2026-07-31"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":327680,"output":32768},"cost":{"input":0.98,"output":3.08,"cache_read":0.18},"updated":"2026-08-14"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":208192,"output":8192},"cost":{"input":0.045,"output":0.3,"cache_read":0.015},"updated":"2026-04-17"},"deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.04,"output":0.08,"cache_read":0.008},"updated":"2026-09-10"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.04,"output":0.08,"cache_read":0.008},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":262144,"output":32768},"cost":{"input":0.68,"output":1.5,"cache_read":0.18},"updated":"2026-06-13"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1001536,"output":65536},"cost":{"input":0.045,"output":0.32,"cache_read":0.015},"updated":"2026-08-14"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1113088,"output":65536},"cost":{"input":1.95,"output":9.75,"cache_read":0.195},"updated":"2026-07-16"}}},"nearai":{"name":"NEAR AI Cloud","npm":"@ai-sdk/openai-compatible","models":{"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4},"updated":"2026-07-09"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/whisper-large-v3":{"name":"Whisper Large v3","limit":{"context":448,"output":448},"cost":{"input":0.01,"output":0.01},"updated":"2023-11-06"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":64000},"cost":{"input":1.1,"output":1.1,"cache_read":0.55},"updated":"2025-12-01"},"black-forest-labs/FLUX.2-klein-4B":{"name":"FLUX.2 Klein 4B","limit":{"context":128000,"output":128000},"cost":{"input":1,"output":1},"updated":"2026-01-14"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.04,"output":1.35,"cache_read":0.018},"updated":"2026-08-14"},"Qwen/Qwen3-Reranker-0.6B":{"name":"Qwen3 Reranker 0.6B","limit":{"context":40960,"output":1024},"cost":{"input":0.01,"output":0.01},"updated":"2025-06-03"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen3-VL 30B-A3B Instruct","limit":{"context":16384,"output":8192},"cost":{"input":0.15,"output":0.55,"cache_read":0.03},"updated":"2025-09-23"},"Qwen/Qwen3-Embedding-0.6B":{"name":"Qwen3 Embedding 0.6B","limit":{"context":32768,"output":1024},"cost":{"input":0.01,"output":0.01},"updated":"2025-06-03"},"Qwen/Qwen3.6-35B-A3B-FP8":{"name":"Qwen 3.6 35B A3B FP8","limit":{"context":262144,"output":8192},"cost":{"input":0.17,"output":1.1,"cache_read":0.056},"updated":"2026-04-17"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.81,"output":3.85,"cache_read":0.41},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3.3,"output":16.5,"cache_read":0.33},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-05-28"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-07-24"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-09-28"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"updated":"2026-06-30"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-09-22"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.08,"output":0.5,"cache_read":0.012},"updated":"2026-08-26"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.5,"output":3.3,"cache_read":0.25},"updated":"2026-02-15"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.8,"output":7.5},"updated":"2026-05-21"}}},"alibaba-token-plan":{"name":"Alibaba Token Plan","npm":"@ai-sdk/openai-compatible","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-02"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-31"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"happyhorse-1.1-i2v":{"name":"HappyHorse 1.1 Image-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"happyhorse-1.1-r2v":{"name":"HappyHorse 1.1 Reference-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-24"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-13"},"qwen3.8-max-preview":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-19"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-12-05"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-07"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-27"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-21"},"wan2.7-image-pro":{"name":"Wan2.7 Image Pro","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-24"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-03"},"wan2.7-image":{"name":"Wan2.7 Image","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-02"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-22"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen-image-2.0-pro":{"name":"Qwen Image 2.0 Pro","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"happyhorse-1.1-t2v":{"name":"HappyHorse 1.1 Text-to-Video","limit":{"context":0,"output":0},"cost":{"input":0,"output":0},"updated":"2026-07-17"},"qwen-image-2.0":{"name":"Qwen Image 2.0","limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-05-21"}}},"trustedrouter":{"name":"TrustedRouter","npm":"@ai-sdk/openai-compatible","models":{"trustedrouter/synth-code":{"name":"Synth Code","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/e2e":{"name":"End-to-End Encrypted","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/fast":{"name":"Fast","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/auto":{"name":"Auto","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/cheap":{"name":"Cheap","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/synth":{"name":"Synth","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"},"trustedrouter/zdr":{"name":"Zero Data Retention","limit":{"context":1000000,"output":131072},"updated":"2026-06-27"}}},"evroc":{"name":"evroc","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":524288,"output":131072},"cost":{"input":1.4375,"output":5.75},"updated":"2026-06-13"},"openai/whisper-large-v3-turbo":{"name":"Whisper Large v3 Turbo","limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023},"updated":"2024-10-01"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":65536,"output":65536},"cost":{"input":0.23,"output":0.92},"updated":"2025-08-05"},"openai/whisper-large-v3":{"name":"Whisper 3 Large","limit":{"context":448,"output":4096},"cost":{"input":0.0023,"output":0.0023},"updated":"2024-10-01"},"KBLab/kb-whisper-large":{"name":"KB Whisper","limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023},"updated":"2024-10-01"},"nvidia/Llama-3.3-70B-Instruct-FP8":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":1.15,"output":1.15},"updated":"2024-12-06"},"Qwen/Qwen3-Reranker-4B":{"name":"Qwen3 Reranker 4B","limit":{"context":32000,"output":4096},"cost":{"input":0.0575,"output":0},"updated":"2025-07-30"},"Qwen/Qwen3.8-27B":{"name":"Qwen3.8-27B","limit":{"context":262144,"output":262144},"cost":{"input":0.87,"output":3.5},"updated":"2026-08-14"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.345,"output":1.38},"updated":"2026-04-17"},"Qwen/Qwen3-Embedding-8B":{"name":"Qwen3 Embedding 8B","limit":{"context":40960,"output":4096},"cost":{"input":0.115,"output":0.115},"updated":"2025-07-30"},"evroc/roc":{"name":"roc","limit":{"context":262144,"output":262144},"cost":{"input":2.875,"output":11.516},"updated":"2026-06-06"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":1.4375,"output":5.75},"updated":"2026-04-21"},"google/gemma-4-26B-A4B-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.144,"output":0.575},"updated":"2026-04-02"},"intfloat/multilingual-e5-large-instruct":{"name":"E5 Multi-Lingual Large Embeddings 0.6B","limit":{"context":512,"output":512},"cost":{"input":0.114,"output":0.114},"updated":"2024-06-01"},"mistralai/Mistral-Medium-3.5-128B":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.725,"output":6.9},"updated":"2026-04-29"},"mistralai/Voxtral-Small-24B-2507":{"name":"Voxtral Small 24B","limit":{"context":32000,"output":32000},"cost":{"input":0.0023,"output":0.0023},"updated":"2025-03-01"}}},"zenmux":{"name":"ZenMux","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5-lightning":{"name":"MiniMax M2.5 highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":4.8,"cache_read":0.06,"cache_write":0.75},"updated":"2026-02-13"},"minimax/minimax-m2":{"name":"MiniMax M2","limit":{"context":204000,"output":64000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax M2.1","limit":{"context":204000,"output":64000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38},"updated":"2025-12-22"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax M2.7 highspeed","limit":{"context":204800,"output":131070},"cost":{"input":0.611,"output":2.4439},"updated":"2026-03-20"},"minimax/minimax-m2.5":{"name":"MiniMax M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax M2.7","limit":{"context":204800,"output":131070},"cost":{"input":0.3055,"output":1.2219},"updated":"2026-03-20"},"kuaishou/kat-coder-pro-v2":{"name":"KAT-Coder-Pro-V2","limit":{"context":256000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-30"},"stepfun/step-3.7-flash-free":{"name":"Step 3.7 Flash (Free)","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"updated":"2026-05-29"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"cost":{"input":0.2,"output":1.15},"updated":"2026-05-29"},"stepfun/step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":64000},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-02"},"stepfun/step-3":{"name":"Step-3","limit":{"context":65536,"output":64000},"cost":{"input":0.21,"output":0.57},"updated":"2025-07-31"},"inclusionai/ring-1t":{"name":"Ring-1T","limit":{"context":128000,"output":64000},"cost":{"input":0.56,"output":2.24,"cache_read":0.11},"updated":"2025-10-12"},"inclusionai/ling-1t":{"name":"Ling-1T","limit":{"context":128000,"output":64000},"cost":{"input":0.56,"output":2.24,"cache_read":0.11},"updated":"2025-10-09"},"inclusionai/ring-2.6-1t":{"name":"inclusionAI: Ring-2.6-1T","limit":{"context":262000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.06},"updated":"2026-05-14"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.12},"updated":"2025-08-07"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5},"updated":"2026-03-20"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-5-codex":{"name":"GPT-5 Codex","limit":{"context":400000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.12},"updated":"2025-09-23"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"openai/gpt-5.5-instant":{"name":"GPT-5.5 Instant","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-28"},"openai/gpt-5.2-pro":{"name":"GPT-5.2-Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":3.75,"output":18.75},"updated":"2026-03-20"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":64000},"cost":{"input":1.75,"output":14,"cache_read":0.17},"updated":"2025-12-11"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14},"updated":"2026-03-20"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1-Codex-Mini","limit":{"context":400000,"output":64000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-11-13"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.12},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.1-codex":{"name":"GPT-5.1-Codex","limit":{"context":400000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.12},"updated":"2025-11-13"},"openai/gpt-5.3-chat":{"name":"GPT-5.3 Chat","limit":{"context":128000,"output":16380},"cost":{"input":1.75,"output":14},"updated":"2026-03-20"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25},"updated":"2026-03-20"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":45,"output":225},"updated":"2026-03-20"},"openai/gpt-5.2-codex":{"name":"GPT-5.2-Codex","limit":{"context":400000,"output":64000},"cost":{"input":1.75,"output":14,"cache_read":0.17},"updated":"2026-01-15"},"openai/gpt-5.1-chat":{"name":"GPT-5.1 Chat","limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.12},"updated":"2025-11-13"},"x-ai/grok-4.2-fast-non-reasoning":{"name":"Grok 4.2 Fast Non Reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"x-ai/grok-4.2-fast":{"name":"Grok 4.2 Fast","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"x-ai/grok-voice-stt-1.0":{"name":"Grok Voice STT 1.0","limit":{"context":15000,"output":15000},"updated":"2026-08-04"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"x-ai/grok-imagine-image-2.0":{"name":"Grok Imagine Image 2.0","limit":{"context":66000,"output":0},"updated":"2026-08-07"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"x-ai/grok-voice-tts-1.0":{"name":"Grok Voice TTS 1.0","limit":{"context":15000,"output":15000},"updated":"2026-07-31"},"baidu/ernie-5.0-thinking-preview":{"name":"ERNIE 5.0","limit":{"context":128000,"output":64000},"cost":{"input":0.84,"output":3.37},"updated":"2026-01-22"},"sapiens-ai/agnes-1.5-lite":{"name":"Agnes 1.5 Lite","limit":{"context":256000,"output":256000},"cost":{"input":0.12,"output":0.6},"updated":"2026-03-26"},"sapiens-ai/agnes-1.5-pro":{"name":"Agnes 1.5 Pro","limit":{"context":256000,"output":256000},"cost":{"input":0.16,"output":0.8},"updated":"2026-03-21"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":64000},"cost":{"input":0.28,"output":0.43},"updated":"2025-12-05"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"deepseek/deepseek-v3.2-exp":{"name":"DeepSeek-V3.2-Exp","limit":{"context":163000,"output":64000},"cost":{"input":0.22,"output":0.33},"updated":"2025-09-29"},"deepseek/deepseek-chat":{"name":"DeepSeek-V3.2 (Non-thinking Mode)","limit":{"context":128000,"output":64000},"cost":{"input":0.28,"output":0.42,"cache_read":0.03},"updated":"2025-12-01"},"volcengine/doubao-seed-2.0-mini":{"name":"Doubao-Seed-2.0-mini","limit":{"context":256000,"output":64000},"cost":{"input":0.03,"output":0.28,"cache_read":0.01,"cache_write":0.0024},"updated":"2026-02-14"},"volcengine/doubao-seed-2.0-code":{"name":"Doubao Seed 2.0 Code","limit":{"context":256000,"output":32000},"cost":{"input":0.9,"output":4.48},"updated":"2026-03-20"},"volcengine/doubao-seed-1.8":{"name":"Doubao-Seed-1.8","limit":{"context":256000,"output":64000},"cost":{"input":0.11,"output":0.28,"cache_read":0.02,"cache_write":0.0024},"updated":"2025-12-18"},"volcengine/doubao-seed-code":{"name":"Doubao-Seed-Code","limit":{"context":256000,"output":64000},"cost":{"input":0.17,"output":1.12,"cache_read":0.03},"updated":"2025-11-11"},"volcengine/doubao-seed-2.0-pro":{"name":"Doubao-Seed-2.0-pro","limit":{"context":256000,"output":64000},"cost":{"input":0.45,"output":2.24,"cache_read":0.09,"cache_write":0.0024},"updated":"2026-02-14"},"volcengine/doubao-seed-2.0-lite":{"name":"Doubao-Seed-2.0-lite","limit":{"context":256000,"output":64000},"cost":{"input":0.09,"output":0.51,"cache_read":0.02,"cache_write":0.0024},"updated":"2026-02-14"},"moonshotai/kimi-k3-free":{"name":"Kimi K3 (Free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-16"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262000,"output":64000},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262000,"output":64000},"cost":{"input":0.58,"output":3.02,"cache_read":0.1},"updated":"2026-01-27"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-06-12"},"moonshotai/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code HighSpeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 0905","limit":{"context":262000,"output":64000},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-09-04"},"moonshotai/kimi-k2.7-code-free":{"name":"Kimi K2.7 Code (Free)","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-12"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262140,"output":262140},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-20"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"moonshotai/kimi-k2-thinking-turbo":{"name":"Kimi K2 Thinking Turbo","limit":{"context":262000,"output":64000},"cost":{"input":1.15,"output":8,"cache_read":0.15},"updated":"2025-11-06"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-sonnet-5-free":{"name":"Claude Sonnet 5 (Free)","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-30"},"anthropic/claude-opus-4.1":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":64000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-sonnet-4":{"name":"Claude Sonnet 4","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-02-06"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-opus-4":{"name":"Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-02-18"},"anthropic/claude-3.7-sonnet":{"name":"Claude 3.7 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-02-24"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":4},"updated":"2026-06-30"},"anthropic/claude-3.5-haiku":{"name":"Claude 3.5 Haiku","limit":{"context":200000,"output":64000},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1},"updated":"2024-11-04"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2-omni":{"name":"MiMo V2 Omni","limit":{"context":265000,"output":265000},"cost":{"input":0.4,"output":2,"cache_read":0.08},"updated":"2026-03-18"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2},"updated":"2026-04-22"},"xiaomi/mimo-v2-flash":{"name":"MiMo-V2-Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2026-02-04"},"xiaomi/mimo-v2-pro":{"name":"MiMo V2 Pro","limit":{"context":1000000,"output":256000},"cost":{"input":1,"output":3,"cache_read":0.2},"updated":"2026-03-18"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08},"updated":"2026-04-22"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1},"updated":"2025-12-17"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash Lite","limit":{"context":1048000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.03,"cache_write":1},"updated":"2025-07-22"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048000,"output":64000},"cost":{"input":0.3,"output":2.5,"cache_read":0.07,"cache_write":1},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1050000,"output":65530},"cost":{"input":0.25,"output":1.5},"updated":"2025-03-20"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"updated":"2026-02-19"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":4.5},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"z-ai/glm-4.6v-flash-free":{"name":"GLM 4.6V Flash (Free)","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2025-12-08"},"z-ai/glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"z-ai/glm-4.7-flashx":{"name":"GLM 4.7 FlashX","limit":{"context":200000,"output":128000},"cost":{"input":0.0728,"output":0.4367,"cache_read":0.0146},"updated":"2026-01-19"},"z-ai/glm-image":{"name":"GLM-Image","limit":{"context":10240,"output":0},"updated":"2026-01-19"},"z-ai/glm-5.3":{"name":"GLM 5.3","limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM 5V Turbo","limit":{"context":200000,"output":128000},"cost":{"input":0.726,"output":3.1946,"cache_read":0.1743},"updated":"2026-04-01"},"z-ai/glm-5.2":{"name":"GLM 5.2","limit":{"context":1000000,"output":128000},"cost":{"input":0.98,"output":3.08,"cache_read":0.182},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM 4.7","limit":{"context":200000,"output":128000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582},"updated":"2025-12-22"},"z-ai/glm-4.6v":{"name":"GLM 4.6V","limit":{"context":200000,"output":128000},"cost":{"input":0.1456,"output":0.4367,"cache_read":0.0291},"updated":"2025-12-08"},"z-ai/glm-5.1":{"name":"GLM 5.1","limit":{"context":200000,"output":128000},"cost":{"input":0.8781,"output":3.5126,"cache_read":0.1903},"updated":"2026-04-07"},"z-ai/glm-4.6v-flash":{"name":"GLM 4.6V FlashX","limit":{"context":200000,"output":128000},"cost":{"input":0.0218,"output":0.2184,"cache_read":0.0044},"updated":"2025-12-08"},"z-ai/glm-5-turbo":{"name":"GLM 5 Turbo","limit":{"context":200000,"output":128000},"cost":{"input":0.73,"output":3.19,"cache_read":0.174},"updated":"2026-03-16"},"z-ai/glm-5.3-flashx":{"name":"GLM 5.3 FlashX","limit":{"context":1000000,"output":128000},"cost":{"input":0.375,"output":1.25,"cache_read":0.075},"updated":"2026-08-26"},"z-ai/glm-4.6":{"name":"GLM 4.6","limit":{"context":200000,"output":128000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582},"updated":"2025-09-30"},"z-ai/glm-4.7-flash-free":{"name":"GLM 4.7 Flash (Free)","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-01-19"},"z-ai/glm-4.5-air":{"name":"GLM 4.5 Air","limit":{"context":128000,"output":96000},"cost":{"input":0.1165,"output":0.2911,"cache_read":0.0233},"updated":"2025-07-28"},"z-ai/glm-5":{"name":"GLM 5","limit":{"context":200000,"output":128000},"cost":{"input":0.58,"output":2.6,"cache_read":0.14},"updated":"2026-02-12"},"z-ai/glm-4.5":{"name":"GLM 4.5","limit":{"context":128000,"output":96000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582},"updated":"2025-07-28"},"tencent/hy3-preview":{"name":"Hy3 preview","limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":0.572,"cache_read":0.058,"cache_write":0},"updated":"2026-04-20"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"qwen/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1020000,"output":1020000},"cost":{"input":0.1,"output":0.4},"updated":"2026-03-20"},"qwen/qwen3-max":{"name":"Qwen3-Max-Thinking","limit":{"context":256000,"output":64000},"cost":{"input":1.2,"output":6},"updated":"2026-01-23"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.8,"output":4.8},"updated":"2026-03-20"},"qwen/qwen3.6-plus":{"name":"Qwen3.6-Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-03-30"},"qwen/qwen3-coder-plus":{"name":"Qwen3-Coder-Plus","limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-07-23"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"}}},"moonshotai":{"name":"Moonshot AI","npm":"@ai-sdk/openai-compatible","models":{"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code HighSpeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"updated":"2026-07-16"}}},"ai21":{"name":"AI21 Labs","npm":"@ai-sdk/openai-compatible","models":{"jamba-large":{"name":"Jamba Large","limit":{"context":256000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-07-01"},"jamba-mini":{"name":"Jamba Mini","limit":{"context":256000,"output":4096},"cost":{"input":0.2,"output":0.4},"updated":"2026-01-01"}}},"salad-cloud":{"name":"SaladCloud AI Gateway","npm":"@saladtechnologies-oss/ai-sdk-provider","models":{"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.09,"output":0.6},"updated":"2026-04-17"}}},"opper":{"name":"Opper","npm":"@ai-sdk/openai-compatible","models":{"gpt-5.3-chat-latest":{"name":"GPT-5.3 Chat (latest)","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-03-03"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.07},"updated":"2026-08-26"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-04-16"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1000000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.75,"output":4.6488,"cache_read":0.44},"updated":"2026-08-14"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"updated":"2025-09-01"},"qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.5811,"output":2.3244},"updated":"2026-02-03"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"updated":"2026-07-24"},"sonar-reasoning-pro":{"name":"Sonar Reasoning Pro","limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-09-01"},"qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":6,"cache_read":0.63},"updated":"2026-08-12"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":65536},"cost":{"input":1.78812,"output":3.57624},"updated":"2026-04-24"},"grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.62708,"output":5.811},"updated":"2026-06-13"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"updated":"2025-10-15"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":256000,"output":8192},"cost":{"input":0.5811,"output":2.44062},"updated":"2026-03-16"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":256000,"output":8192},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":128000,"output":8192},"cost":{"input":0.11622,"output":0.488124},"updated":"2025-08-05"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.5811,"output":3},"updated":"2026-08-14"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":256000,"output":8192},"cost":{"input":0.46488,"output":2.44062},"updated":"2026-04-02"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"devstral-2512":{"name":"Devstral 2","limit":{"context":256000,"output":8192},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"updated":"2025-09-29"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":64000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"updated":"2026-06-30"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.25,"output":0.66},"updated":"2026-04-24"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":983616,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-03"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"updated":"2026-09-02"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":8192},"cost":{"input":1.1622,"output":4.88124},"updated":"2025-08-05"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-01"},"sonar":{"name":"Sonar","limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1},"updated":"2025-09-01"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":196608,"output":131072},"cost":{"input":0.69732,"output":2.78928},"updated":"2026-03-18"}}},"ebcloud":{"name":"EBCloud","npm":"@ai-sdk/openai-compatible","models":{"GLM-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":0.8571,"output":3.4286},"updated":"2026-04-07"},"Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.9286,"output":3.8571},"updated":"2026-04-21"},"DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.4286,"output":0.8571},"updated":"2026-04-24"},"DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.143,"output":0.2857},"updated":"2026-04-24"}}},"anthropic":{"name":"Anthropic","npm":"@ai-sdk/anthropic","models":{"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"}}},"tempr":{"name":"Tempr Gateway","npm":"@ai-sdk/openai-compatible","models":{"minimax/MiniMax-M2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"xai/grok-4.20-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"xiaomi-mimo/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi-mimo/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"xiaomi-mimo/mimo-v2.6-pro-ultraspeed":{"name":"MiMo-V2.6-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"updated":"2026-09-21"},"deepseek/deepseek-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003,"reasoning":0.6},"updated":"2026-09-10"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022,"reasoning":1.98},"updated":"2026-08-22"},"mistral/zai-glm-5-3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-08-14"},"mistral/mistral-small-latest":{"name":"Mistral Small (latest)","limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-16"},"mistral/mistral-embed":{"name":"Mistral Embed","limit":{"context":8000,"output":3072},"cost":{"input":0.1,"output":0},"updated":"2023-12-11"},"mistral/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-16"},"mistral/zai-glm-5-2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-06-13"},"mistral/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"mistral/mistral-medium-2604":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"updated":"2026-04-29"},"mistral/mistral-medium-latest":{"name":"Mistral Medium (latest)","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"updated":"2026-04-29"},"mistral/mistral-large-latest":{"name":"Mistral Large (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"mistral/voxtral-small-latest":{"name":"Voxtral Small (latest)","limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"},"groq/allam-2-7b":{"name":"ALLaM-2-7b","limit":{"context":4096,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-01-23"},"groq/openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-09-25"},"groq/openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2025-10-21"},"groq/qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":131042,"output":16384},"cost":{"input":0.8,"output":4},"updated":"2026-08-14"},"cerebras/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":40960},"cost":{"input":0.35,"output":0.75},"updated":"2026-06-10"},"cerebras/qwen-3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":131072,"output":40960},"cost":{"input":0.99,"output":1.49},"updated":"2026-09-03"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"anthropic/claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"updated":"2026-04-02"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"updated":"2026-04-02"},"google/gemini-flash-lite-latest":{"name":"Gemini Flash-Lite Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-07-21"},"google/gemini-embedding-001":{"name":"Gemini Embedding 001","limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0},"updated":"2025-05-20"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"google/gemini-embedding-2":{"name":"Gemini Embedding 2","limit":{"context":8192,"output":1},"cost":{"input":0.2,"output":0},"updated":"2026-04-22"},"moonshot/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshot/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshot/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshot/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"zai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"updated":"2026-08-26"},"zai/glm-4.7-flashx":{"name":"GLM-4.7-FlashX","limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"},"zai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-08-14"},"zai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-04-01"},"zai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"zai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-12-22"},"zai/glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9},"updated":"2025-12-08"},"zai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-04-07"},"zai/glm-4.6v-flash":{"name":"GLM-4.6V-Flash","limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-08"},"zai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-03-16"},"zai/glm-5.3-flashx":{"name":"GLM-5.3-FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"updated":"2026-09-18"},"zai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"zai/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"updated":"2025-07-28"},"zai/glm-4.5v":{"name":"GLM-4.5V","limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8},"updated":"2025-08-11"},"zai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"updated":"2026-02-12"},"zai/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-19"},"zai/glm-4.5-flash":{"name":"GLM-4.5-Flash","limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-07-28"},"zai/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"}}},"kilo":{"name":"Kilo Gateway","npm":"@ai-sdk/openai-compatible","models":{"~unbiased/pareto-latest":{"name":"Pareto Latest","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03},"updated":"2026-10-13"},"~google/gemini-flash-latest":{"name":"Google: Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-04-27"},"~google/gemini-pro-latest":{"name":"Google: Gemini Pro Latest","limit":{"context":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":0.1875,"reasoning":10},"updated":"2026-04-27"},"fireworks/ember-1":{"name":"Fireworks: Ember-1","limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-24"},"thedrummer/cydonia-24b-v4.1":{"name":"TheDrummer: Cydonia 24B V4.1","limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15},"updated":"2025-09-27"},"thedrummer/skyfall-36b-v2":{"name":"TheDrummer: Skyfall 36B V2","limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25},"updated":"2025-03-10"},"thedrummer/unslopnemo-12b":{"name":"TheDrummer: UnslopNemo 12B","limit":{"context":1024000,"output":819200},"cost":{"input":0.4,"output":0.4},"updated":"2024-11-08"},"sakana/sakana-namazu":{"name":"Sakana Namazu","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"updated":"2026-08-03"},"sakana/fugu-ultra-v2":{"name":"Fugu Ultra v2","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-09-11"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"meta-llama/llama-3.1-70b-instruct":{"name":"Llama-3.1-70B-Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4},"updated":"2024-07-23"},"meta-llama/llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32},"updated":"2024-12-06"},"meta-llama/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201},"updated":"2024-09-25"},"meta-llama/llama-4-maverick":{"name":"Meta: Llama 4 Maverick","limit":{"context":128000,"output":16384},"cost":{"input":0.1875,"output":0.6525,"cache_read":0.05},"updated":"2025-04-05"},"meta-llama/llama-4-scout":{"name":"Meta: Llama 4 Scout","limit":{"context":327680,"output":16384},"cost":{"input":0.08,"output":0.24},"updated":"2025-04-05"},"meta-llama/llama-3.2-3b-instruct":{"name":"Meta: Llama 3.2 3B Instruct","limit":{"context":80000,"output":72000},"cost":{"input":0.05,"output":0.33},"updated":"2024-09-25"},"meta-llama/llama-guard-4-12b":{"name":"Meta: Llama Guard 4 12B","limit":{"context":163840,"output":16384},"cost":{"input":0.144,"output":0.144},"updated":"2025-04-30"},"meta-llama/llama-3.1-8b-instruct":{"name":"Llama-3.1-8B-Instruct","limit":{"context":131072,"output":117964},"cost":{"input":0.02,"output":0.04},"updated":"2024-07-23"},"reflection/beam-1.0-501b-a23b":{"name":"Reflection: Beam 1.0 501B A23B","limit":{"context":1048576,"output":943718},"cost":{"input":0.25,"output":1},"updated":"2026-10-16"},"reflection/beam-free":{"name":"Reflection: Beam 1.0 (free)","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"reasoning":0},"updated":"2025-08-26"},"minimax/minimax-m1":{"name":"MiniMax: MiniMax M1","limit":{"context":1000000,"output":40000},"cost":{"input":0.4,"output":2.2},"updated":"2025-06-17"},"minimax/minimax-m3.1-flash:free":{"name":"MiniMax: MiniMax M3.1 Flash (free)","limit":{"context":1000000,"output":524288},"cost":{"input":0,"output":0},"updated":"2026-10-19"},"minimax/minimax-m2-her":{"name":"MiniMax-M2 Her","limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-01-23"},"minimax/minimax-m2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2025-12-23"},"minimax/minimax-01":{"name":"MiniMax: MiniMax-01","limit":{"context":1000192,"output":900172},"cost":{"input":0.2,"output":1.1},"updated":"2025-01-15"},"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":198000,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"anthracite-org/magnum-v4-72b":{"name":"Magnum v4 72B","limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5},"updated":"2024-10-22"},"cohere/command-r7b-12-2024":{"name":"Command R7B","limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2024-12-02"},"cohere/north-mini-code:free":{"name":"Cohere: North Mini Code (free)","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-06-17"},"cohere/command-r-08-2024":{"name":"Command R","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"updated":"2024-08-30"},"cohere/command-a":{"name":"Command A","limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"cohere/command-a-plus":{"name":"Cohere: Command A+","limit":{"context":192000,"output":64000},"cost":{"input":0.3,"output":1.5,"cache_read":0.15},"updated":"2026-09-22"},"cohere/command-r-plus-08-2024":{"name":"Command R+","limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"updated":"2024-08-30"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"stepfun/step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-13"},"nex-agi/nex-n2.5-pro":{"name":"Nex AGI: Nex-N2.5-Pro","limit":{"context":262144,"output":235929},"cost":{"input":0.075,"output":0.25,"cache_read":0.015},"updated":"2026-09-08"},"nex-agi/nex-n2.5-mini":{"name":"Nex AGI: Nex-N2.5-Mini","limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025},"updated":"2026-09-08"},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"name":"Venice: Uncensored","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9},"updated":"2025-07-09"},"inference-net/schematron-v2-small":{"name":"Inference.net: Schematron V2 Small","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05},"updated":"2026-09-12"},"inference-net/schematron-v2-turbo":{"name":"Inference.net: Schematron V2 Turbo","limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03},"updated":"2026-09-12"},"inclusionai/ling-3.1-flash":{"name":"inclusionAI: Ling 3.1 Flash","limit":{"context":262144,"output":235929},"cost":{"input":0.3,"output":0.9,"cache_read":0.06},"updated":"2026-10-02"},"inclusionai/ling-3.0-flash-vl":{"name":"inclusionAI: Ling 3.0 Flash VL","limit":{"context":131072,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-09-10"},"inclusionai/ling-3.0-flash":{"name":"inclusionAI: Ling 3.0 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-07-23"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.6-terra-pro":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5-image":{"name":"GPT-5 Image","limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25},"updated":"2025-10-14"},"openai/gpt-5.6-sol-pro":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4o-mini-2024-07-18":{"name":"OpenAI: GPT-4o-mini (2024-07-18)","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-audio-mini":{"name":"OpenAI: GPT Audio Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4},"updated":"2026-01-19"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":128000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-5.4-image-2":{"name":"GPT-5.4 Image 2","limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2},"updated":"2026-04-21"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.018,"output":0.09,"cache_read":0.009},"updated":"2025-08-05"},"openai/gpt-3.5-turbo-0613":{"name":"OpenAI: GPT-3.5 Turbo (older v0613)","limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2},"updated":"2024-01-25"},"openai/o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"updated":"2025-03-19"},"openai/gpt-6-astra-pro":{"name":"OpenAI: GPT-6 Astra Pro ($$$$)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5.6-luna-pro":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-audio":{"name":"OpenAI: GPT Audio","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10},"updated":"2026-01-19"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/o4-mini-high":{"name":"OpenAI: o4 Mini High","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-4o-2024-05-13":{"name":"GPT-4o (2024-05-13)","limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"updated":"2024-05-13"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2025-06-10"},"openai/gpt-6-luna-pro":{"name":"OpenAI: GPT-6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-chat-latest":{"name":"OpenAI: GPT Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-05"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol-pro":{"name":"OpenAI: GPT-6.1 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":65536},"cost":{"input":0.03,"output":0.15,"cache_read":0.015},"updated":"2025-08-05"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-11-13"},"openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-10-29"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3-mini-high":{"name":"OpenAI: o3 Mini High","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-02-12"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"openai/gpt-5.2-chat":{"name":"OpenAI: GPT-5.2 Chat","limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-10"},"openai/gpt-5-image-mini":{"name":"GPT-5 Image Mini","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25},"updated":"2025-10-16"},"openai/gpt-3.5-turbo-16k":{"name":"OpenAI: GPT-3.5 Turbo 16k","limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4},"updated":"2023-08-28"},"openai/gpt-6-sol-pro":{"name":"OpenAI: GPT-6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-3.5-turbo-instruct":{"name":"OpenAI: GPT-3.5 Turbo Instruct","limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2},"updated":"2023-09-28"},"relace/relace-search":{"name":"Relace: Relace Search","limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3},"updated":"2025-12-08"},"relace/relace-apply-3":{"name":"Relace: Relace Apply 3","limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25},"updated":"2025-09-26"},"meituan/longcat-2.0":{"name":"Meituan: LongCat 2.0","limit":{"context":1048756,"output":262144},"cost":{"input":0.75,"output":3,"cache_read":0.015},"updated":"2026-07-20"},"meta/muse-spark-1.2-contributor":{"name":"Meta: Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-21"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/muse-wonder":{"name":"Meta: Muse Wonder","limit":{"context":1048576,"output":943718},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"updated":"2026-08-10"},"meta/muse-spark-1.3-contributor":{"name":"Meta: Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"x-ai/grok-4.20":{"name":"SpaceXAI: Grok 4.20","limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-4.20-multi-agent":{"name":"SpaceXAI: Grok 4.20 Multi-Agent","limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"bytedance-seed/seed-1.6":{"name":"ByteDance Seed: Seed 1.6 (retires Nov 11)","limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2},"updated":"2025-12-23"},"bytedance-seed/seed-2-1-turbo":{"name":"ByteDance Seed: Seed 2.1 Turbo","limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5},"updated":"2026-08-12"},"bytedance-seed/seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-lite":{"name":"Seed 2.0 Lite","limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2},"updated":"2026-02-14"},"bytedance-seed/seed-1.6-flash":{"name":"ByteDance Seed: Seed 1.6 Flash (retires Nov 11)","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3},"updated":"2025-12-23"},"stealth/glyph-cluster":{"name":"Stealth: Glyph Cluster (free)","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0,"reasoning":0},"updated":"2025-08-26"},"stealth/claude-opus-4.7":{"name":"Stealth: Claude Opus 4.7 (20% off)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"reasoning":0},"updated":"2025-08-26"},"stealth/claude-opus-4.6":{"name":"Stealth: Claude Opus 4.6 (20% off)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"reasoning":0},"updated":"2025-08-26"},"stealth/claude-sonnet-4.6":{"name":"Stealth: Claude Sonnet 4.6 (20% off)","limit":{"context":1000000,"output":64000},"cost":{"input":2.4,"output":12,"cache_read":0.24,"cache_write":3,"reasoning":0},"updated":"2025-08-26"},"stealth/qwen3.6-plus":{"name":"Stealth: Qwen3.6 Plus (50% off)","limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.3125,"reasoning":0},"updated":"2025-08-26"},"stealth/claude-opus-4.8":{"name":"Stealth: Claude Opus 4.8 (20% off)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"reasoning":0},"updated":"2025-08-26"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":943718},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"updated":"2026-07-31"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"updated":"2025-05-28"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1024000,"output":384000},"cost":{"input":1.6,"output":3.2,"cache_read":0.135},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":943718},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":262144},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.00686},"updated":"2026-09-01"},"deepseek/deepseek-chat-v3.1":{"name":"DeepSeek V3.1","limit":{"context":163840,"output":32768},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"updated":"2025-08-21"},"deepseek/deepseek-chat-v3-0324":{"name":"DeepSeek V3 0324","limit":{"context":128000,"output":115200},"cost":{"input":0.29,"output":1.14,"cache_read":0.11},"updated":"2025-03-24"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":131072,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.028},"updated":"2025-12-01"},"deepseek/deepseek-v3.1-terminus":{"name":"DeepSeek: DeepSeek V3.1 Terminus","limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":1},"updated":"2025-09-22"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048575,"output":943717},"cost":{"input":0.091,"output":0.182,"cache_read":0.0182},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1024000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"deepseek/deepseek-v3.2-exp":{"name":"DeepSeek: DeepSeek V3.2 Exp","limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":0.41},"updated":"2025-09-29"},"deepseek/deepseek-chat":{"name":"DeepSeek Chat","limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89},"updated":"2026-02-28"},"sao10k/l3.1-euryale-70b":{"name":"Sao10K: Llama 3.1 Euryale 70B v2.2","limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85},"updated":"2024-08-28"},"sao10k/l3-lunaris-8b":{"name":"Sao10K: Llama 3 8B Lunaris","limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05},"updated":"2024-08-13"},"~moonshotai/kimi-latest":{"name":"MoonshotAI: Kimi Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.238,"output":13,"cache_read":0.228},"updated":"2026-04-27"},"moondream/moondream3-preview":{"name":"Moondream: Moondream 3 Preview","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-15"},"moondream/moondream3.1-9b-a2b":{"name":"Moondream: Moondream 3.1","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-15"},"~openai/gpt-luna-latest":{"name":"OpenAI: GPT Luna Latest","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-11"},"~openai/gpt-sol-latest":{"name":"OpenAI: GPT Sol Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-11"},"~openai/gpt-astra-latest":{"name":"OpenAI: GPT Astra Latest ($$$$)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-11"},"~openai/gpt-mini-latest":{"name":"OpenAI: GPT Mini Latest","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-04-27"},"~openai/gpt-terra-latest":{"name":"OpenAI: GPT Terra Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-11"},"unbiased/pareto-26.9":{"name":"Pareto 26.9","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"updated":"2026-10-13"},"unbiased/pareto-26.10":{"name":"Pareto 26.10","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03},"updated":"2026-10-15"},"aion-labs/aion-3.5-mini":{"name":"AionLabs: Aion 3.5 Mini","limit":{"context":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-09-23"},"aion-labs/aion-3.5":{"name":"AionLabs: Aion 3.5","limit":{"context":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-09-23"},"aion-labs/aion-3.0":{"name":"AionLabs: Aion-3.0","limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-07-07"},"aion-labs/aion-rp-llama-3.1-8b":{"name":"AionLabs: Aion-RP 1.0 (8B)","limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6},"updated":"2025-02-04"},"aion-labs/aion-2.0":{"name":"AionLabs: Aion-2.0","limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2},"updated":"2026-02-23"},"aion-labs/aion-3.0-mini":{"name":"AionLabs: Aion-3.0-Mini","limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-07-07"},"amazon/nova-lite-v1":{"name":"Amazon: Nova Lite 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24},"updated":"2024-12-05"},"amazon/nova-micro-v1":{"name":"Amazon: Nova Micro 1.0","limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14},"updated":"2024-12-05"},"amazon/nova-2-lite-v1":{"name":"Amazon: Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5},"updated":"2025-12-02"},"amazon/nova-pro-v1":{"name":"Amazon: Nova Pro 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2},"updated":"2024-12-05"},"amazon/nova-premier-v1":{"name":"Amazon: Nova Premier 1.0","limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625},"updated":"2025-10-31"},"prism-ml/ternary-bonsai-2-27b":{"name":"PrismML: Ternary Bonsai 2 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375},"updated":"2026-09-18"},"inception/mercury-2":{"name":"Inception: Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025},"updated":"2026-03-04"},"inception/mercury-2.5":{"name":"Inception: Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.2,"output":0.75,"cache_read":0.02},"updated":"2026-09-08"},"~x-ai/grok-latest":{"name":"xAI: Grok Latest","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"nvidia/nemotron-3.5-lightning":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.12,"cache_read":0.0125},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":235929},"cost":{"input":0.08,"output":0.45},"updated":"2026-03-11"},"nvidia/nemotron-3.5-lightning:free":{"name":"NVIDIA: Nemotron 3.5 Lightning (free)","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b:free":{"name":"NVIDIA: Nemotron 3 Super (free)","limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":202800,"output":182520},"cost":{"input":0.4,"output":1.76,"cache_read":0.08},"updated":"2026-06-04"},"nvidia/nemotron-3.5-super-vl":{"name":"NVIDIA: Nemotron 3.5 Super VL","limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.4,"cache_read":0.08},"updated":"2026-10-15"},"nvidia/nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2},"updated":"2026-06-04"},"nvidia/nemotron-3-ultra-550b-a55b:free":{"name":"NVIDIA: Nemotron 3 Ultra (free)","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"nvidia/nemotron-3.5-content-safety:free":{"name":"NVIDIA: Nemotron 3.5 Content Safety (free)","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"name":"NVIDIA: Nemotron 3 Nano Omni (free)","limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-28"},"nvidia/nemotron-3.5-super-vl:free":{"name":"NVIDIA: Nemotron 3.5 Super VL (free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-15"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.05,"output":0.2},"updated":"2025-12-15"},"~anthropic/claude-fable-latest":{"name":"Anthropic: Claude Fable Latest ($$$$)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-06-09"},"~anthropic/claude-opus-latest":{"name":"Anthropic: Claude Opus Latest","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-04-21"},"~anthropic/claude-haiku-latest":{"name":"Anthropic: Claude Haiku Latest","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-04-27"},"~anthropic/claude-sonnet-latest":{"name":"Anthropic: Claude Sonnet Latest","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-04-27"},"writer/palmyra-x5":{"name":"Writer: Palmyra X5","limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6},"updated":"2026-01-21"},"perplexity/sonar-deep-research":{"name":"Perplexity: Sonar Deep Research","limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-03-07"},"perplexity/sonar-pro-search":{"name":"Perplexity: Sonar Pro Search","limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"updated":"2025-10-30"},"perplexity/sonar-pro":{"name":"Perplexity: Sonar Pro","limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"updated":"2025-03-07"},"perplexity/sonar-reasoning-pro":{"name":"Perplexity: Sonar Reasoning Pro","limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8},"updated":"2025-03-07"},"perplexity/sonar":{"name":"Perplexity: Sonar","limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1},"updated":"2025-01-27"},"poolside/laguna-s-2.1":{"name":"Poolside: Laguna S 2.1 (retires Oct 31)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01},"updated":"2026-07-21"},"poolside/laguna-xs-2.1:free":{"name":"Poolside: Laguna XS 2.1 (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-02"},"poolside/laguna-xs-2.1":{"name":"Poolside: Laguna XS 2.1 (retires Oct 31)","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05},"updated":"2026-07-02"},"poolside/laguna-s-2.1:free":{"name":"Poolside: Laguna S 2.1 (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-21"},"arcee-ai/trinity-large-thinking":{"name":"Trinity Large Thinking","limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06},"updated":"2026-05-28"},"gryphe/mythomax-l2-13b":{"name":"MythoMax 13B","limit":{"context":4096,"output":3686},"cost":{"input":0.08,"output":0.11},"updated":"2023-07-02"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":235929},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"moonshotai/kimi-k2":{"name":"Kimi K2 0711","limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3},"updated":"2025-07-11"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":235929},"cost":{"input":0.6712,"output":3.35,"cache_read":0.18},"updated":"2026-06-12"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 Instruct 0905","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"updated":"2025-09-05"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":235929},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-07-16"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-opus-4.1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"kilo-auto/small":{"name":"Auto Small","limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.4,"cache_read":0.005,"reasoning":0},"updated":"1970-01-01"},"kilo-auto/balanced":{"name":"Auto Balanced","limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_read":0.0325,"cache_write":0.40625,"reasoning":0},"updated":"1970-01-01"},"kilo-auto/efficient":{"name":"Auto Efficient","limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_read":0.0325,"cache_write":0.40625,"reasoning":0},"updated":"1970-01-01"},"kilo-auto/free":{"name":"Auto Free","limit":{"context":256000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0,"reasoning":0},"updated":"1970-01-01"},"kilo-auto/frontier":{"name":"Auto Frontier","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"reasoning":0},"updated":"1970-01-01"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.28,"cache_read":0.05},"updated":"2026-09-22"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.004},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003},"updated":"2026-04-22"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"name":"MiMo-V2.6-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"updated":"2026-09-21"},"mancer/weaver":{"name":"Mancer: Weaver (alpha)","limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75},"updated":"2023-08-02"},"google/gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.16},"updated":"2025-03-12"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"cache_read":0.0125,"cache_write":0.041667,"reasoning":0.75},"updated":"2026-05-07"},"google/gemma-2-27b-it":{"name":"Gemma 2 27B","limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65},"updated":"2024-07-13"},"google/lyria-3-pro-preview":{"name":"Lyria 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"google/gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-05-28"},"google/gemini-nano-banana-2.1":{"name":"Nano Banana 2.1","limit":{"context":65536,"output":58982},"cost":{"input":1.5,"output":7.5},"updated":"2026-10-06"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.041667,"reasoning":1.5},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":235929},"cost":{"input":0.042,"output":0.22,"cache_read":0.021},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":16384},"cost":{"input":0.04,"output":0.05,"cache_read":0.02},"updated":"2025-03-12"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.083333,"reasoning":0.4},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"cache_read":0.0125,"cache_write":0.041667,"reasoning":0.75},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":0.1875,"reasoning":6},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":1.25,"cache_read":0.015,"cache_write":0.041667,"reasoning":1.25},"updated":"2026-07-21"},"google/gemini-3-pro-image-preview":{"name":"Nano Banana Pro Preview","limit":{"context":65536,"output":32768},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":0.1875,"reasoning":6},"updated":"2025-11-20"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":16384},"cost":{"input":0.1,"output":0.34,"cache_read":0.1},"updated":"2026-04-02"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.375,"output":1.875,"cache_read":0.0375,"cache_write":0.020833,"reasoning":1.875},"updated":"2026-07-21"},"google/gemini-2.5-pro-preview":{"name":"Gemini 2.5 Pro Preview 06-05","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375,"reasoning":10},"updated":"2025-06-05"},"google/gemini-3.1-flash-image-preview":{"name":"Nano Banana 2 Preview","limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3},"updated":"2026-02-26"},"google/lyria-3-clip-preview":{"name":"Lyria 3 Clip Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375,"reasoning":10},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5},"updated":"2026-06-30"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.041667,"reasoning":4.5},"updated":"2026-05-19"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":16384},"cost":{"input":0.04,"output":0.12},"updated":"2025-03-12"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":0.1875,"reasoning":10},"updated":"2026-10-13"},"google/gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"updated":"2025-08-26"},"perceptron/perceptron-mk1":{"name":"Perceptron: Perceptron Mk1","limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5},"updated":"2026-05-12"},"perceptron/perceptron-mk1.5":{"name":"Perceptron: Perceptron Mk1.5","limit":{"context":36864,"output":8192},"cost":{"input":0.15,"output":1.5},"updated":"2026-09-25"},"morph/morph-v3-fast":{"name":"Morph: Morph V3 Fast","limit":{"context":262144,"output":131072},"cost":{"input":0.8,"output":1.2},"updated":"2025-07-07"},"morph/morph-v3-large":{"name":"Morph: Morph V3 Large","limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9},"updated":"2025-07-07"},"bytedance/ui-tars-1.5-7b":{"name":"ByteDance: UI-TARS 7B ","limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1},"updated":"2025-07-22"},"~z-ai/glm-latest":{"name":"Z.ai: GLM Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.053,"output":6,"cache_read":0.033},"updated":"2026-08-19"},"~z-ai/glm-flash-latest":{"name":"Z.ai: GLM Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.048,"output":0.16,"cache_read":0.006},"updated":"2026-08-27"},"~deepseek/deepseek-flash-latest":{"name":"DeepSeek: DeepSeek Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.043,"output":0.6,"cache_read":0.005},"updated":"2026-09-14"},"~deepseek/deepseek-pro-latest":{"name":"DeepSeek: DeepSeek Pro Latest","limit":{"context":1048576,"output":393216},"cost":{"input":0.1307,"output":8,"cache_read":0.13},"updated":"2026-09-14"},"~deepseek/deepseek-v4-flash-latest":{"name":"DeepSeek: DeepSeek V4 Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.00912,"output":0.12,"cache_read":0.003304},"updated":"2026-08-01"},"upstage/solar-pro-3":{"name":"Upstage: Solar Pro 3","limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-01-27"},"upstage/solar-pro4":{"name":"Upstage: Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-08-10"},"upstage/solar-mini4":{"name":"Upstage: Solar Mini 4","limit":{"context":524288,"output":131072},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2026-09-23"},"undi95/remm-slerp-l2-13b":{"name":"ReMM SLERP 13B","limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65},"updated":"2023-07-22"},"ibm-granite/granite-4.2-8b":{"name":"IBM: Granite 4.2 8B","limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015},"updated":"2026-08-31"},"ibm-granite/granite-4.0-h-micro":{"name":"IBM: Granite 4.0 Micro","limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112},"updated":"2025-10-20"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":943718},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":943718},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"z-ai/glm-5.3-prime":{"name":"Z.ai: GLM 5.3 Prime","limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"updated":"2026-09-23"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":943718},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.54,"output":1.98,"cache_read":0.099},"updated":"2025-12-22"},"z-ai/glm-4.6v":{"name":"GLM-4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"updated":"2025-12-08"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"z-ai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"z-ai/glm-5.3-flashx":{"name":"Z.ai: GLM 5.3 FlashX","limit":{"context":1048576,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.09},"updated":"2026-09-18"},"z-ai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"z-ai/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"updated":"2025-07-28"},"z-ai/glm-4.5v":{"name":"GLM-4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"z-ai/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":131072,"output":117964},"cost":{"input":0.0605,"output":0.4},"updated":"2026-01-19"},"z-ai/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"rekaai/reka-edge":{"name":"Reka Edge","limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1},"updated":"2026-03-20"},"rekaai/reka-flash-3":{"name":"Reka Flash 3","limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2},"updated":"2025-03-12"},"tencent/hy3-preview":{"name":"Hy3 preview","limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06},"updated":"2026-04-20"},"tencent/hy-mt2-1.8b":{"name":"Hy-MT2-1.8B","limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177},"updated":"2026-08-20"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/hy-mt2-7b":{"name":"Hy-MT2-7B","limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295},"updated":"2026-08-19"},"tencent/hunyuan-a13b-instruct":{"name":"Tencent: Hunyuan A13B Instruct","limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57},"updated":"2025-07-08"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"tencent/hy-mt2-30b-a3b":{"name":"Hy-MT2-30B-A3B","limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295},"updated":"2026-08-20"},"elorian/glimpse":{"name":"Elorian: Glimpse","limit":{"context":262144,"output":256000},"cost":{"input":0.6,"output":3,"cache_read":0.06},"updated":"2026-10-17"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":235929},"cost":{"input":0.39,"output":2.34},"updated":"2026-02-15"},"qwen/qwen3-vl-8b-instruct":{"name":"Qwen: Qwen3 VL 8B Instruct","limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":0.75,"cache_read":0.12},"updated":"2025-10-14"},"qwen/qwen3.5-plus-02-15":{"name":"Qwen: Qwen3.5 Plus 2026-02-15","limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56},"updated":"2026-02-16"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"updated":"2026-06-02"},"qwen/qwen3-vl-30b-a3b-thinking":{"name":"Qwen: Qwen3 VL 30B A3B Thinking","limit":{"context":262144,"output":235929},"cost":{"input":0.29,"output":1},"updated":"2025-10-06"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen/qwen3.5-plus-20260420":{"name":"Qwen: Qwen3.5 Plus 2026-04-20","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375},"updated":"2026-04-27"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325},"updated":"2025-09-11"},"qwen/qwen3-30b-a3b-instruct-2507":{"name":"Qwen: Qwen3 30B A3B Instruct 2507","limit":{"context":262144,"output":235929},"cost":{"input":0.09,"output":0.3},"updated":"2025-07-29"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.08},"updated":"2026-02-23"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":1.1},"updated":"2025-09"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":235929},"cost":{"input":0.12,"output":0.8,"cache_read":0.07},"updated":"2026-02-03"},"qwen/qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"qwen/qwen3-coder":{"name":"Qwen: Qwen3 Coder 480B A35B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.1},"updated":"2025-07-23"},"qwen/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-04"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-12"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1,"cache_read":0.05},"updated":"2026-04-17"},"qwen/qwen2.5-vl-72b-instruct":{"name":"Qwen: Qwen2.5 VL 72B Instruct","limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4},"updated":"2025-02-01"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.1},"updated":"2025-09-23"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.195,"output":1.56},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":2.7},"updated":"2026-04-22"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"qwen/qwen-2.5-7b-instruct":{"name":"Qwen: Qwen2.5 7B Instruct","limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2},"updated":"2024-10-16"},"qwen/qwen3-32b":{"name":"Qwen3 32B","limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28},"updated":"2025-04"},"qwen/qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"updated":"2025-04-28"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"updated":"2026-04-27"},"qwen/qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.28},"updated":"2025-04"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":235929},"cost":{"input":0.425,"output":2.55,"cache_read":0.085,"cache_write":0.53125},"updated":"2026-08-14"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen-2.5-coder-32b-instruct":{"name":"Qwen2.5 Coder 32B Instruct","limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1},"updated":"2024-11-11"},"qwen/qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.15},"updated":"2026-02-23"},"qwen/qwen3.8-max-prime":{"name":"Qwen 3.8 Max Prime","limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"updated":"2026-09-23"},"qwen/qwen3-14b":{"name":"Qwen: Qwen3 14B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24},"updated":"2025-04-28"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.1625,"output":1.3},"updated":"2026-02-23"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375},"updated":"2025-07-28"},"qwen/qwen3-235b-a22b-thinking-2507":{"name":"Qwen: Qwen3 235B A22B Thinking 2507","limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5},"updated":"2025-07-25"},"qwen/qwen3.5-flash-02-23":{"name":"Qwen: Qwen3.5-Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26},"updated":"2026-02-25"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"updated":"2026-05-21"},"qwen/qwen3-235b-a22b-2507":{"name":"Qwen: Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"updated":"2025-07-21"},"qwen/qwen-2.5-72b-instruct":{"name":"Qwen2.5 72B Instruct","limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4},"updated":"2024-09-19"},"mistralai/ministral-8b-2512":{"name":"Ministral 3 8B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"updated":"2025-12-02"},"mistralai/ministral-14b-2512":{"name":"Ministral 3 14B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"updated":"2025-12-02"},"mistralai/mixtral-8x22b-instruct":{"name":"Mixtral 8x22B Instruct","limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-04-17"},"mistralai/mistral-small-3.1-24b-instruct":{"name":"Mistral Small 3.1 24B","limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555},"updated":"2025-03-17"},"mistralai/mistral-nemo":{"name":"Mistral Nemo","limit":{"context":131072,"output":16384},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"updated":"2024-07-01"},"mistralai/mistral-large-4-0":{"name":"Mistral: Mistral Large 4 (50% off)","limit":{"context":1048576,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"mistralai/voxtral-small-24b-2507":{"name":"Voxtral Small 24B 2507","limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2025-07-15"},"mistralai/mistral-saba":{"name":"Saba","limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02},"updated":"2025-02-17"},"mistralai/ministral-3b-2512":{"name":"Ministral 3 3B 2512","limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01},"updated":"2025-12-02"},"mistralai/mistral-small-24b-instruct-2501":{"name":"Mistral Small 3","limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08},"updated":"2025-01-30"},"mistralai/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"mistralai/codestral-2508":{"name":"Codestral 25.08","limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-07-30"},"mistralai/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistralai/mistral-small-3.2-24b-instruct":{"name":"Mistral Small 3.2 24B","limit":{"context":256000,"output":16384},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2025-06-20"},"mistralai/mistral-large":{"name":"Mistral Large","limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-02-26"},"mistralai/devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-12-09"},"mistralai/mistral-medium-3-5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5},"updated":"2026-04-30"},"mistralai/mistral-medium-3.1":{"name":"Mistral Medium 3.1","limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-08-13"},"mistralai/mistral-medium-3":{"name":"Mistral Medium 3","limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-05-07"},"mistralai/mistral-large-2407":{"name":"Mistral Large 2407","limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-11-19"},"thinkingmachines/inkling-small:free":{"name":"Thinking Machines: Inkling Small (free)","limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-07-30"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":524288,"output":471859},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":524288,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"microsoft/phi-4":{"name":"Microsoft: Phi 4","limit":{"context":16384,"output":14745},"cost":{"input":0.056,"output":0.112},"updated":"2025-01-10"},"nousresearch/hermes-4-405b":{"name":"Nous: Hermes 4 405B","limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3},"updated":"2025-08-26"},"nousresearch/hermes-3-llama-3.1-70b":{"name":"Nous: Hermes 3 70B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7},"updated":"2024-08-18"},"nousresearch/hermes-3-llama-3.1-405b":{"name":"Nous: Hermes 3 405B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1},"updated":"2024-08-16"},"openrouter/auto":{"name":"Auto Router","limit":{"context":2000000,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-03-15"},"openrouter/free":{"name":"OpenRouter Free Models Router","limit":{"context":200000,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-02-01"},"openrouter/pareto-code":{"name":"Pareto Code Router","limit":{"context":200000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-05-01"},"openrouter/bodybuilder":{"name":"Body Builder (beta)","limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-03-15"},"xingchen-agi/xing4.0-29b-a4b:free":{"name":"XingChen: Xing4.0 29B A4B (free)","limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"updated":"2026-10-16"},"scaledown/summarize":{"name":"ScaleDown: Summarize","limit":{"context":1000000,"output":4000},"cost":{"input":0.05,"output":0},"updated":"2026-10-13"},"scaledown/extract":{"name":"ScaleDown: Extract","limit":{"context":1000000,"output":900000},"cost":{"input":0.05,"output":0},"updated":"2026-10-13"},"liquid/lfm-2.5-2.6b:free":{"name":"LiquidAI: LFM2.5-2.6B (free)","limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"liquid/lfm-2.5-24b-a2b":{"name":"LiquidAI: LFM2.5-24B-A2B","limit":{"context":128000,"output":8192},"cost":{"input":0.05,"output":0.7,"cache_read":0.025},"updated":"2026-10-13"},"dots-studio/dots-3-note-preview:free":{"name":"Dots Studio: Dots3-Note Preview (free)","limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0},"updated":"2026-08-14"}}},"berget":{"name":"Berget.AI","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":524288,"output":32768},"cost":{"input":1.54,"output":4.84},"updated":"2026-06-13"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":16384},"cost":{"input":0.29,"output":0.58},"updated":"2026-09-30"},"Qwen/Qwen3.8-27B-FP8":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.46,"output":3.48},"updated":"2026-09-01"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":327680,"output":32768},"cost":{"input":3,"output":15},"updated":"2026-07-28"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.275,"output":0.55},"updated":"2026-04-02"},"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"name":"Mistral Small 3.2 24B Instruct 2506","limit":{"context":32000,"output":8192},"cost":{"input":0.33,"output":0.33},"updated":"2025-10-01"}}},"longcat":{"name":"LongCat","npm":"@ai-sdk/openai-compatible","models":{"LongCat-2.0":{"name":"LongCat-2.0","limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"updated":"2026-06-30"}}},"submodel":{"name":"submodel","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-4.5-FP8":{"name":"GLM 4.5 FP8","limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.8},"updated":"2025-07-28"},"zai-org/GLM-4.5-Air":{"name":"GLM 4.5 Air","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5},"updated":"2025-07-28"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5},"updated":"2025-08-23"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.3},"updated":"2025-08-23"},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.8},"updated":"2025-08-23"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"name":"Qwen3 235B A22B Thinking 2507","limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.6},"updated":"2025-08-23"},"deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324","limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8},"updated":"2025-08-23"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek R1 0528","limit":{"context":75000,"output":163840},"cost":{"input":0.5,"output":2.15},"updated":"2025-08-23"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek V3.1","limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8},"updated":"2025-08-23"}}},"llama":{"name":"Llama","npm":"@ai-sdk/openai-compatible","models":{"llama-3.3-8b-instruct":{"name":"Llama-3.3-8B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-12-06"},"groq-llama-4-maverick-17b-128e-instruct":{"name":"Groq-Llama-4-Maverick-17B-128E-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-12-06"},"llama-4-scout-17b-16e-instruct-fp8":{"name":"Llama-4-Scout-17B-16E-Instruct-FP8","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"cerebras-llama-4-scout-17b-16e-instruct":{"name":"Cerebras-Llama-4-Scout-17B-16E-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama-4-Maverick-17B-128E-Instruct-FP8","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"},"cerebras-llama-4-maverick-17b-128e-instruct":{"name":"Cerebras-Llama-4-Maverick-17B-128E-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2025-04-05"}}},"xiaomi":{"name":"Xiaomi","npm":"@ai-sdk/openai-compatible","models":{"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"mimo-v2-omni":{"name":"MiMo-V2-Omni","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-06-24"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-06-24"},"mimo-v2-flash":{"name":"MiMo-V2-Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-06-24"},"mimo-v2-pro":{"name":"MiMo-V2-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-06-24"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-06-24"},"mimo-v2.5-pro-ultraspeed":{"name":"MiMo-V2.5-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":1.305,"output":2.61,"cache_read":0.0108},"updated":"2026-06-09"},"mimo-v2.6-pro-ultraspeed":{"name":"MiMo-V2.6-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"updated":"2026-09-21"}}},"xiaomi-token-plan-sgp":{"name":"Xiaomi Token Plan (Singapore)","npm":"@ai-sdk/openai-compatible","models":{"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2-tts":{"name":"MiMo-V2-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-03-18"},"mimo-v2.5-tts-voicedesign":{"name":"MiMo-V2.5-TTS-VoiceDesign","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.5-tts":{"name":"MiMo-V2.5-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2-pro":{"name":"MiMo-V2-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2.5-tts-voiceclone":{"name":"MiMo-V2.5-TTS-VoiceClone","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"}}},"echo":{"name":"Echo","npm":"@ai-sdk/openai-compatible","models":{"echo":{"name":"Echo","limit":{"context":262144,"output":65536},"cost":{"input":10,"output":50},"updated":"2026-08-16"}}},"frogbot":{"name":"FrogBot","npm":"@ai-sdk/openai-compatible","models":{"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"minimax-m2-5":{"name":"MiniMax-M2.5","limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2025-02-22"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast (Non-Reasoning)","limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-25"},"qwen-3-6-plus":{"name":"Qwen 3.6 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-04-03"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-02-17"},"kimi-k2.5":{"name":"Kimi-K2.5","limit":{"context":256000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"1970-01-01"},"deepseek-v4-pro":{"name":"DeepSeek v4 Pro","limit":{"context":128000,"output":8192},"cost":{"input":1.74,"output":3.48,"cache_read":0.14},"updated":"2026-04-24"},"gemini-3-1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-18"},"gpt-5-4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"gpt-5-3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-15"},"kimi-k2-6":{"name":"Kimi-K2.6","limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"1970-01-01"},"gpt-5-4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2025-08-07"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.075},"updated":"2025-07-17"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.2},"updated":"1970-01-01"},"gpt-5-5":{"name":"GPT-5.5","limit":{"context":272000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"minimax-m2-7":{"name":"MiniMax-M2.7","limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"grok-4-3":{"name":"Grok 4.3","limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-30"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-02-05"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"1970-01-01"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31},"updated":"2025-06-05"},"grok-code-fast-1":{"name":"Grok 4.1 Fast (Reasoning)","limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02},"updated":"2025-08-28"},"zai-glm-5-1":{"name":"Z.AI GLM-5.1","limit":{"context":198000,"output":8192},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2025-02-22"},"grok-4-1-fast-reasoning":{"name":"Grok 4.1 Fast (Reasoning)","limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-25"}}},"meganova":{"name":"Meganova","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2024-12-06"},"zai-org/GLM-4.6":{"name":"GLM-4.6","limit":{"context":202752,"output":131072},"cost":{"input":0.45,"output":1.9},"updated":"2025-09-30"},"zai-org/GLM-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":0.8,"output":2.56},"updated":"2026-02-11"},"zai-org/GLM-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":131072},"cost":{"input":0.2,"output":0.8},"updated":"2025-12-22"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-02-12"},"MiniMaxAI/MiniMax-M2.1":{"name":"MiniMax M2.1","limit":{"context":196608,"output":131072},"cost":{"input":0.28,"output":1.2},"updated":"2025-12-23"},"XiaomiMiMo/MiMo-V2-Flash":{"name":"MiMo V2 Flash","limit":{"context":262144,"output":32000},"cost":{"input":0.1,"output":0.3},"updated":"2025-12-17"},"Qwen/Qwen2.5-VL-32B-Instruct":{"name":"Qwen2.5 VL 32B Instruct","limit":{"context":16384,"output":16384},"cost":{"input":0.2,"output":0.6},"updated":"2025-03-24"},"Qwen/Qwen3.5-Plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4},"updated":"2026-02"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.6},"updated":"2025-07-23"},"moonshotai/Kimi-K2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.8},"updated":"2026-01-27"},"moonshotai/Kimi-K2-Thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.6},"updated":"2025-11-06"},"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"name":"Mistral Small 3.2 24B Instruct","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-06-20"},"mistralai/Mistral-Nemo-Instruct-2407":{"name":"Mistral Nemo Instruct 2407","limit":{"context":131072,"output":65536},"cost":{"input":0.02,"output":0.04},"updated":"2024-07-18"},"deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":0.88},"updated":"2025-03-24"},"deepseek-ai/DeepSeek-V3.2":{"name":"DeepSeek V3.2","limit":{"context":164000,"output":164000},"cost":{"input":0.26,"output":0.38},"updated":"2025-12-03"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15},"updated":"2025-05-28"},"deepseek-ai/DeepSeek-V3.2-Exp":{"name":"DeepSeek V3.2 Exp","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.4},"updated":"2025-10-10"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek V3.1","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1},"updated":"2025-08-25"}}},"inco":{"name":"Inco","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4.1-flash:fast":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.6,"output":2.4},"updated":"2026-09-10"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-08-14"},"glm-5.3-flash:fast":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5},"updated":"2026-08-26"},"kimi-k3:fast":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":6,"output":30},"updated":"2026-07-16"},"glm-5.3:fast":{"name":"GLM-5.3 Fast","limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8},"updated":"2026-08-14"},"minimax-m3:fast":{"name":"MiniMax M3 Fast","limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4},"updated":"2026-06-01"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2},"updated":"2026-06-01"}}},"pendra":{"name":"Pendra","npm":"@ai-sdk/openai-compatible","models":{"llama3.3:70b":{"name":"Llama-3.3-70B-Instruct","limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-12-06"},"qwen3-coder:30b":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2025-04"},"gpt-oss:120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"updated":"2026-04-24"},"qwen3.6:27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01-19"}}},"routing-run":{"name":"routing.run","npm":"@ai-sdk/openai-compatible","models":{"glm-5.2-nitro":{"name":"GLM 5.2 Nitro","limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4},"updated":"2026-06-13"},"kimi-k2.6-nitro":{"name":"Kimi K2.6 Nitro","limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"updated":"2026-04-21"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1000000,"output":128000},"cost":{"input":0.7,"output":4.2},"updated":"2026-07-09"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":32000},"cost":{"input":5,"output":25},"updated":"2026-05-28"},"kimi-k2.7-code-nitro":{"name":"Kimi K2.7 Code Nitro","limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"updated":"2026-06-12"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"updated":"2026-03-13"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15},"updated":"2026-07-09"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":64000},"cost":{"input":0.348,"output":0.696},"updated":"2026-04-24"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4},"updated":"2026-06-13"},"nemotron-3-ultra":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":131072,"output":32000},"cost":{"input":0.1,"output":0.1},"updated":"2026-06-04"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"updated":"2026-06-12"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"updated":"2026-04-21"},"qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":32000},"cost":{"input":0.16,"output":0.48},"updated":"2026-02-23"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.112,"output":0.224},"updated":"2026-04-24"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1000000,"output":128000},"cost":{"input":1.5,"output":9},"updated":"2026-07-09"}}},"neuralwatt":{"name":"Neuralwatt","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4.1-flash-flex":{"name":"DeepSeek V4.1 Flash Flex","limit":{"context":1048560,"output":393216},"cost":{"input":0.0975,"output":0.39,"cache_read":0.00975},"updated":"2026-09-10"},"glm-5.3-flash":{"name":"GLM-5.3 Flash","limit":{"context":1048560,"output":1048560},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"glm-5.2-short":{"name":"GLM 5.2 Short","limit":{"context":199984,"output":32000},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"updated":"2026-06-17"},"deepseek-v4-flash-flex":{"name":"DeepSeek V4 Flash Flex","limit":{"context":1048560,"output":393216},"cost":{"input":0.091,"output":0.182,"cache_read":0.0182},"updated":"2026-04-24"},"glm-5.2-flex":{"name":"GLM 5.2 Flex","limit":{"context":1048560,"output":1048560},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"updated":"2026-06-17"},"glm-5.3":{"name":"GLM 5.3","limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"updated":"2026-08-14"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048560,"output":393216},"cost":{"input":0.87,"output":1.74,"cache_read":0.036},"updated":"2026-09-22"},"kimi-k2.7-code-flex":{"name":"Kimi K2.7 Code Flex","limit":{"context":262128,"output":262128},"cost":{"input":0.6175,"output":2.6,"cache_read":0.06175},"updated":"2026-06-12"},"kimi-k3-fast":{"name":"Kimi K3 Fast","limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"mimo-v2.6-pro-flex":{"name":"MiMo-V2.6-Pro Flex","limit":{"context":1048560,"output":393216},"cost":{"input":0.5655,"output":1.131,"cache_read":0.0234},"updated":"2026-09-22"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048560,"output":393216},"cost":{"input":1,"output":3,"cache_read":0.1},"updated":"2026-04-24"},"qwen3.6-35b-fast":{"name":"Qwen3.6 35B Fast","limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029},"updated":"2026-04-01"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048560,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM 5.2","limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"updated":"2026-06-17"},"glm-5.2-short-fast-flex":{"name":"GLM 5.2 Short Fast Flex","limit":{"context":199984,"output":32000},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"updated":"2026-06-17"},"qwen3.6-35b":{"name":"Qwen3.6 35B","limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029},"updated":"2026-04-17"},"glm-5.3-flash-flex":{"name":"GLM-5.3 Flash Flex","limit":{"context":1048560,"output":1048560},"cost":{"input":0.0975,"output":0.325,"cache_read":0.0195},"updated":"2026-08-26"},"glm-5.2-short-fast":{"name":"GLM 5.2 Short Fast","limit":{"context":199984,"output":32000},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"updated":"2026-06-17"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095},"updated":"2026-06-12"},"kimi-k2.7-code-fast":{"name":"Kimi K2.7 Code Fast","limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095},"updated":"2026-06-12"},"glm-5.2-fast":{"name":"GLM 5.2 Fast","limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"updated":"2026-06-17"},"qwen-3.8-27b-flex":{"name":"Qwen3.8 27B Flex","limit":{"context":262128,"output":131072},"cost":{"input":0.2925,"output":2.08,"cache_read":0.1625},"updated":"2026-08-14"},"kimi-k3-flex":{"name":"Kimi K3 Flex","limit":{"context":1048560,"output":1048560},"cost":{"input":1.95,"output":9.75,"cache_read":0.195},"updated":"2026-07-16"},"glm-5.2-short-flex":{"name":"GLM 5.2 Short Flex","limit":{"context":199984,"output":32000},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"updated":"2026-06-17"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048560,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"glm-5.3-flex":{"name":"GLM 5.3 Flex","limit":{"context":1048560,"output":1048560},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"updated":"2026-08-14"},"qwen-3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262128,"output":131072},"cost":{"input":0.45,"output":3.2,"cache_read":0.25},"updated":"2026-08-14"},"deepseek-v4-flash-speed":{"name":"DeepSeek V4 Flash (Speed)","limit":{"context":1048560,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-07-31"},"gemma-4-31b":{"name":"Gemma 4 31B","limit":{"context":262128,"output":16384},"cost":{"input":0.144,"output":0.42,"cache_read":0.0144},"updated":"2026-04-02"},"qwen3.6-35b-flex":{"name":"Qwen3.6 35B Flex","limit":{"context":131056,"output":131056},"cost":{"input":0.1885,"output":0.7475,"cache_read":0.01885},"updated":"2026-04-17"}}},"merge-gateway":{"name":"Merge Gateway","npm":"merge-gateway-ai-sdk-provider","models":{"sakana/sakana-namazu":{"name":"Sakana Namazu","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"updated":"2026-08-03"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"minimax/minimax-m2":{"name":"MiniMax M2","limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax M2.1","limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2025-12-23"},"minimax/minimax-m2.5-highspeed":{"name":"MiniMax M2.5 Highspeed","limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax M2.7 Highspeed","limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m3.1-flash":{"name":"MiniMax M3.1 Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-19"},"minimax/minimax-m2.5":{"name":"MiniMax M2.5","limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax M3","limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax M2.7","limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"xai/grok-4.20-0309-reasoning":{"name":"Grok 4.20","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 Non-Reasoning","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"cohere/command-r7b-12-2024":{"name":"Command R7B 12-2024","limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2024-12-02"},"cohere/command-r-08-2024":{"name":"Command R 08-2024","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"updated":"2024-08-30"},"cohere/command-a-03-2025":{"name":"Command A 03-2025","limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"cohere/command-r-plus-08-2024":{"name":"Command R+ 08-2024","limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"updated":"2024-08-30"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-5.3-chat-latest":{"name":"GPT-5.3 Chat Latest","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-03-03"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-5-chat-latest":{"name":"GPT-5 Chat Latest","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4 Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 Mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.1-chat-latest":{"name":"GPT-5.1 Chat Latest","limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 Nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.2-chat-latest":{"name":"GPT-5.2 Chat Latest","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5 Turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-oss-safeguard-120b":{"name":"GPT OSS Safeguard 120B","limit":{"context":4096,"output":4096},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-29"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-oss-20b":{"name":"GPT-OSS 20B","limit":{"context":128000,"output":32000},"cost":{"input":0.04,"output":0.15,"cache_read":0.02},"updated":"2025-08-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3 Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-4o-2024-05-13":{"name":"GPT-4o (2024-05-13)","limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"updated":"2024-05-13"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-oss-120b":{"name":"GPT-OSS 120B","limit":{"context":128000,"output":32000},"cost":{"input":0.05,"output":0.25},"updated":"2025-08-05"},"openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":4096,"output":4096},"cost":{"input":0.07,"output":0.2,"cache_read":0,"cache_write":0},"updated":"2025-10-29"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"meta/llama-3.1-70b-instruct":{"name":"Llama 3.1 70B","limit":{"context":128000,"output":2048},"cost":{"input":0.99,"output":0.99},"updated":"2024-07-23"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/llama-3.3-70b-instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":0.5,"cache_read":0.11},"updated":"2024-12-06"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/llama-3.1-8b-instruct":{"name":"Llama 3.1 8B","limit":{"context":128000,"output":2048},"cost":{"input":0.22,"output":0.22},"updated":"2024-07-23"},"deepseek/deepseek-v4-pro-0423":{"name":"DeepSeek V4 Pro 0423","limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3},"updated":"2026-04-23"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.035,"output":0.07,"cache_read":0.007},"updated":"2026-07-31"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 (0528)","limit":{"context":65536,"output":32768},"cost":{"input":1.35,"output":5.4,"cache_read":0.945},"updated":"2025-05-28"},"deepseek/deepseek-v4-flash-0423":{"name":"DeepSeek V4 Flash 0423","limit":{"context":131072,"output":32768},"cost":{"input":0.139,"output":0.278},"updated":"2026-04-23"},"deepseek/deepseek-v3.1":{"name":"DeepSeek V3.1","limit":{"context":131072,"output":32768},"cost":{"input":0.56,"output":1.68,"cache_read":0.13},"updated":"2025-08-21"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":128000,"output":32768},"cost":{"input":0.28,"output":0.4,"cache_read":0.13},"updated":"2025-12-01"},"deepseek/deepseek-r1":{"name":"DeepSeek R1","limit":{"context":163840,"output":40960},"cost":{"input":1.35,"output":5.4},"updated":"2025-05-29"},"deepseek/deepseek-v3":{"name":"DeepSeek V3","limit":{"context":163840,"output":81920},"cost":{"input":0.27,"output":1.1},"updated":"2024-12-26"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.1125},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.003625},"updated":"2026-08-22"},"deepseek/deepseek-v4-flash-0731-fast":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"updated":"2026-07-31"},"nvidia/nemotron-3.5-lightning-30b-a3b":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":1000000,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"nvidia/nemotron-nano-9b-v2":{"name":"Nemotron Nano 9B","limit":{"context":128000,"output":8192},"cost":{"input":0.06,"output":0.23},"updated":"2025-08-18"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":256000,"output":32000},"cost":{"input":0.05,"output":0.2},"updated":"2025-12-15"},"writer/palmyra-x5":{"name":"Palmyra X5","limit":{"context":1000000,"output":250000},"cost":{"input":0.6,"output":6},"updated":"2025-04-28"},"writer/palmyra-x4":{"name":"Palmyra X4","limit":{"context":128000,"output":32000},"cost":{"input":2.5,"output":10},"updated":"2024-10-09"},"mistral/pixtral-large-latest":{"name":"Pixtral Large (latest)","limit":{"context":128000,"output":128000},"cost":{"input":2,"output":6},"updated":"2024-11-04"},"mistral/mistral-large-2411":{"name":"Mistral Large 2.1","limit":{"context":131072,"output":16384},"cost":{"input":2,"output":6},"updated":"2024-11-18"},"mistral/magistral-medium-latest":{"name":"Magistral Medium (latest)","limit":{"context":128000,"output":16384},"cost":{"input":2,"output":5},"updated":"2025-03-20"},"mistral/devstral-medium-latest":{"name":"Devstral 2 (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-02"},"mistral/mistral-small-latest":{"name":"Mistral Small (latest)","limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-16"},"mistral/codestral-latest":{"name":"Codestral (latest)","limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9},"updated":"2025-01-04"},"mistral/devstral-small-2507":{"name":"Devstral Small","limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-10"},"mistral/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistral/devstral-medium-2507":{"name":"Devstral Medium","limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2},"updated":"2025-07-10"},"mistral/devstral-2512":{"name":"Devstral 2","limit":{"context":256000,"output":256000},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-12-09"},"mistral/mistral-medium-2505":{"name":"Mistral Medium 3","limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-05-07"},"mistral/mistral-medium-latest":{"name":"Mistral Medium (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2026-04-29"},"mistral/mistral-large-latest":{"name":"Mistral Large (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5},"updated":"2025-11-06"},"anthropic/claude-opus-4-20250514":{"name":"Claude Opus 4 (20250514)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-1-20250805":{"name":"Claude Opus 4.1 (20250805)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5 (20250929)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-sonnet-4-20250514":{"name":"Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5 (20251001)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5 (20251101)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"anthropic/claude-3-7-sonnet-20250219":{"name":"Claude 3.7 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-02-19"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"google/gemini-3.1-flash-image":{"name":"Gemini 3.1 Flash Image","limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":32768},"cost":{"input":0.08,"output":0.45,"cache_read":0.04},"updated":"2025-03-12"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-08-13"},"google/gemini-3-pro-image":{"name":"Gemini 3 Pro Image","limit":{"context":65536,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-05-28"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B","limit":{"context":262144,"output":65536},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B","limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.08},"updated":"2025-03-12"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"google/gemini-3-pro-preview":{"name":"Gemini 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-18"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B It","limit":{"context":262144,"output":65536},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"google/gemini-flash-lite-latest":{"name":"Gemini Flash-Lite Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-07-21"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"google/gemini-embedding-001":{"name":"Gemini Embedding 001","limit":{"context":2048,"output":4096},"cost":{"input":0.15,"output":0},"updated":"2025-05-20"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B","limit":{"context":128000,"output":8192},"cost":{"input":0.09,"output":0.29},"updated":"2025-03-12"},"google/gemini-2.5-computer-use-preview-10-2025":{"name":"Gemini 2.5 Computer Use Preview (10-2025)","limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10},"updated":"2025-10-07"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"google/gemini-2.5-flash-image":{"name":"Gemini 2.5 Flash Image","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5},"updated":"2025-08-26"},"google/gemini-embedding-2":{"name":"Gemini Embedding 2","limit":{"context":8192,"output":8192},"cost":{"input":0.2,"output":0},"updated":"2026-04-22"},"bytedance/dola-seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.4},"updated":"2026-02-15"},"bytedance/dola-seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4},"updated":"2026-02-14"},"bytedance/dola-seed-2.0-code-preview":{"name":"Dola Seed 2.0 Code (preview)","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-03-28"},"bytedance/dola-seed-2.0-pro":{"name":"Seed 2.0 Pro","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-03-28"},"bytedance/dola-seed-2.0-lite":{"name":"Seed 2.0 Lite","limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":2},"updated":"2026-02-28"},"moonshot/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"moonshot/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshot/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshot/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshot/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":2.9,"output":14,"cache_read":0.3},"updated":"2026-07-16"},"zai/glm-5.3-flash":{"name":"GLM-5.3 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai/glm-4.7-flashx":{"name":"GLM-4.7 FlashX","limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"},"zai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0.7,"output":2.2,"cache_read":0.13},"updated":"2026-08-14"},"zai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.05,"output":3.3,"cache_read":0.195},"updated":"2026-06-13"},"zai/glm-4.7":{"name":"GLM-4.7","limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-12-22"},"zai/glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-04-07"},"zai/glm-5-turbo":{"name":"GLM-5 Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-03-16"},"zai/glm-4.6":{"name":"GLM-4.6","limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"zai/glm-4.5-air":{"name":"GLM-4.5 Air","limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"updated":"2025-07-28"},"zai/glm-4.5v":{"name":"Glm 4.5V","limit":{"context":128000,"output":32000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11,"cache_write":0},"updated":"2025-08-11"},"zai/glm-5":{"name":"GLM-5","limit":{"context":200000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"updated":"2026-02-12"},"zai/glm-4.7-flash":{"name":"GLM 4.7 Flash","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4},"updated":"2026-01-19"},"zai/glm-4.5":{"name":"GLM-4.5","limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B","limit":{"context":131072,"output":32768},"cost":{"input":0.172,"output":1.032,"cache_read":0.0344},"updated":"2026-02-15"},"qwen/qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":256000,"output":65536},"cost":{"input":1.31,"output":7.88},"updated":"2026-04-20"},"qwen/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":1.8},"updated":"2025-04"},"qwen/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.0574},"updated":"2025-07-21"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6},"updated":"2026-06-02"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":977000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.287,"cache_read":0.023,"cache_write":0.14375},"updated":"2025-09-11"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B A10B","limit":{"context":131072,"output":32768},"cost":{"input":0.115,"output":0.917,"cache_read":0.023},"updated":"2026-02-23"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":1.1,"cache_read":0.05},"updated":"2025-09"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.8,"cache_read":0.075},"updated":"2026-02-03"},"qwen/qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"qwen/qwen3-vl-flash":{"name":"Qwen3-VL Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.022,"output":0.215,"cache_read":0.0044,"cache_write":0.0275},"updated":"2025-10-15"},"qwen/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3-VL 30B-A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.0216},"updated":"2025-10-04"},"qwen/qwen3-235b-a22b":{"name":"Qwen3 235B A22B","limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":1.147,"cache_read":0.0574},"updated":"2025-04"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":1010000},"cost":{"input":2.5,"output":6.25,"cache_read":0.5},"updated":"2026-08-12"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485,"cache_read":0.0496},"updated":"2026-04-17"},"qwen/qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":250000},"cost":{"input":0.022,"output":0.216,"cache_read":0.0044,"cache_write":0.0275},"updated":"2025-07-28"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3-VL 235B A22B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.105},"updated":"2025-09-23"},"qwen/qwen3-max-preview":{"name":"Qwen3 Max Preview","limit":{"context":256000,"output":65536},"cost":{"input":1.08,"output":4.8},"updated":"2025-09-23"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":131072,"output":32768},"cost":{"input":0.086,"output":0.688,"cache_read":0.0172},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":256000,"output":64000},"cost":{"input":0.4126,"output":2.4754},"updated":"2026-04-22"},"qwen/qwen3-32b":{"name":"Qwen3 32B","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-04"},"qwen/qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":1.076,"cache_read":0.0216},"updated":"2025-04-28"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":250000},"cost":{"input":0.165,"output":0.99,"cache_read":0.0165,"cache_write":0.20625},"updated":"2026-04-27"},"qwen/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":1000000,"output":250000},"cost":{"input":0.029,"output":0.287,"cache_read":0.0029,"cache_write":0.03625},"updated":"2026-02-23"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13},"updated":"2026-02-23"},"qwen/qwen3-vl-235b-a22b-thinking":{"name":"Qwen3-VL 235B A22B Thinking","limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":2.867,"cache_read":0.0574},"updated":"2025-09-23"},"qwen/qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434,"cache_read":0.0718,"cache_write":0.44875},"updated":"2025-09-23"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.688,"cache_read":0.0115,"cache_write":0.14375},"updated":"2026-02-16"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":250000},"cost":{"input":0.276,"output":1.651,"cache_read":0.0276,"cache_write":0.345},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B A3B","limit":{"context":131072,"output":32768},"cost":{"input":0.057,"output":0.459,"cache_read":0.020357},"updated":"2026-02-23"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":250000},"cost":{"input":0.144,"output":0.574,"cache_read":0.0288,"cache_write":0.18},"updated":"2025-07-28"},"qwen/qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1000000,"output":250000},"cost":{"input":0.574,"output":2.294,"cache_read":0.1148,"cache_write":0.7175},"updated":"2025-07-23"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":250000},"cost":{"input":0.825,"output":2.4755,"cache_read":0.165,"cache_write":1.03125},"updated":"2026-05-21"},"qwen/qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":262144,"output":65536},"cost":{"input":0.143,"output":1.434,"cache_read":0.0286,"cache_write":0.17875},"updated":"2025-09-23"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":1048000,"output":32000},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"}}},"clarifai":{"name":"Clarifai","npm":"@ai-sdk/openai-compatible","models":{"openai/chat-completion/models/gpt-oss-120b-high-throughput":{"name":"GPT OSS 120B High Throughput","limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.36},"updated":"2026-02-25"},"openai/chat-completion/models/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":16384},"cost":{"input":0.045,"output":0.18},"updated":"2025-12-12"},"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput":{"name":"MiniMax-M2.5 High Throughput","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2026-02-25"},"moonshotai/chat-completion/models/Kimi-K2_6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-04-21"},"clarifai/main/models/mm-poly-8b":{"name":"MM Poly 8B","limit":{"context":32768,"output":4096},"cost":{"input":0.658,"output":1.11},"updated":"2026-02-25"},"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507":{"name":"Qwen3 30B A3B Thinking 2507","limit":{"context":262144,"output":131072},"cost":{"input":0.36,"output":1.3},"updated":"2026-02-25"},"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507":{"name":"Qwen3 30B A3B Instruct 2507","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.5},"updated":"2026-02-25"},"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct":{"name":"Qwen3 Coder 30B A3B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.11458,"output":0.74812},"updated":"2026-02-12"},"mistralai/completion/models/Ministral-3-14B-Reasoning-2512":{"name":"Ministral 3 14B Reasoning 2512","limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":1.7},"updated":"2025-12-12"},"mistralai/completion/models/Ministral-3-3B-Reasoning-2512":{"name":"Ministral 3 3B Reasoning 2512","limit":{"context":262144,"output":262144},"cost":{"input":1.039,"output":0.54825},"updated":"2026-02-25"},"arcee_ai/AFM/models/trinity-mini":{"name":"Trinity Mini","limit":{"context":131072,"output":131072},"cost":{"input":0.045,"output":0.15},"updated":"2026-02-25"},"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR":{"name":"DeepSeek OCR","limit":{"context":8192,"output":8192},"cost":{"input":0.2,"output":0.7},"updated":"2026-02-25"}}},"google":{"name":"Google","npm":"@ai-sdk/google","models":{"gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60},"updated":"2026-05-28"},"veo-3.1-fast-generate-preview":{"name":"Veo 3.1 fast","limit":{"context":480,"output":8192},"updated":"2026-01-01"},"veo-3.1-generate-preview":{"name":"Veo 3.1","limit":{"context":480,"output":8192},"updated":"2026-01"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"gemini-2.5-pro-preview-tts":{"name":"Gemini 2.5 Pro Preview TTS","limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20},"updated":"2025-05-01"},"veo-3.1-lite-generate-preview":{"name":"Veo 3.1 lite","limit":{"context":480,"output":8192},"updated":"2026-03-31"},"lyria-3-pro-preview":{"name":"Lyria 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"deep-research-max-preview-04-2026":{"name":"Deep Research Max Preview (Apr-21-2026)","limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-04-21"},"gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120},"updated":"2026-05-28"},"gemini-3.1-flash-tts-preview":{"name":"Gemini 3.1 Flash TTS Preview","limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20},"updated":"2026-04-15"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"updated":"2026-04-02"},"gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"deep-research-preview-04-2026":{"name":"Deep Research Preview (Apr-21-2026)","limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-04-21"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-03-03"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gemini-3-pro-image-preview":{"name":"Nano Banana Pro","limit":{"context":131072,"output":32768},"cost":{"input":2,"output":120},"updated":"2025-11-20"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"gemini-omni-flash-preview":{"name":"Gemini Omni Flash Preview","limit":{"context":131072,"output":65536},"cost":{"input":1.5,"output":17.5},"updated":"2026-06-30"},"gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"updated":"2026-04-02"},"gemini-flash-lite-latest":{"name":"Gemini Flash-Lite Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-07-21"},"gemini-3.5-live-translate-preview":{"name":"Gemini 3.5 Live Translate Preview","limit":{"context":16384,"output":32768},"cost":{"input":3.5,"output":21},"updated":"2026-06-09"},"gemini-3.1-flash-image-preview":{"name":"Nano Banana 2","limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":60},"updated":"2026-02-26"},"gemini-embedding-001":{"name":"Gemini Embedding 001","limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0},"updated":"2025-05-20"},"lyria-3-clip-preview":{"name":"Lyria 3 Clip Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":30},"updated":"2026-06-30"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gemini-2.5-computer-use-preview-10-2025":{"name":"Gemini 2.5 Computer Use Preview 10-2025","limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10},"updated":"2025-10-07"},"gemini-2.5-flash-preview-tts":{"name":"Gemini 2.5 Flash Preview TTS","limit":{"context":8192,"output":16384},"cost":{"input":0.5,"output":10},"updated":"2025-05-01"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":32768},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30,"cache_read":0.075},"updated":"2025-08-26"},"gemini-3.1-flash-live-preview":{"name":"Gemini 3.1 Flash Live Preview","limit":{"context":131072,"output":65536},"cost":{"input":0.75,"output":4.5},"updated":"2026-03-26"},"gemini-embedding-2":{"name":"Gemini Embedding 2","limit":{"context":8192,"output":1},"cost":{"input":0.2,"output":0},"updated":"2026-04-22"}}},"qvac":{"name":"QVAC","npm":"@qvac/ai-sdk-provider","models":{"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-17"},"gemma4-31b":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"qwen3.5-2b":{"name":"Qwen3.5 2B","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-11-01"},"qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-02-23"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2025-08-05"},"qwen3.5-0.8b":{"name":"Qwen3.5 0.8B","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-11-01"},"qwen3.5-4b":{"name":"Qwen3.5 4B","limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-11-01"}}},"morph":{"name":"Morph","npm":"@ai-sdk/openai-compatible","models":{"auto":{"name":"Auto","limit":{"context":32000,"output":32000},"cost":{"input":0.85,"output":1.55},"updated":"2024-06-01"},"morph-v3-fast":{"name":"Morph v3 Fast","limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2},"updated":"2024-08-15"},"morph-v3-large":{"name":"Morph v3 Large","limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9},"updated":"2024-08-15"}}},"inference":{"name":"Inference","npm":"@ai-sdk/openai-compatible","models":{"meta/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.01,"output":0.01},"updated":"2025-01-01"},"meta/llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.02,"output":0.02},"updated":"2025-01-01"},"meta/llama-3.2-11b-vision-instruct":{"name":"Llama 3.2 11B Vision Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.055,"output":0.055},"updated":"2025-01-01"},"meta/llama-3.1-8b-instruct":{"name":"Llama 3.1 8B Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.025,"output":0.025},"updated":"2025-01-01"},"mistral/mistral-nemo-12b-instruct":{"name":"Mistral Nemo 12B Instruct","limit":{"context":16000,"output":4096},"cost":{"input":0.038,"output":0.1},"updated":"2025-01-01"},"osmosis/osmosis-structure-0.6b":{"name":"Osmosis Structure 0.6B","limit":{"context":4000,"output":2048},"cost":{"input":0.1,"output":0.5},"updated":"2025-01-01"},"google/gemma-3":{"name":"Google Gemma 3","limit":{"context":125000,"output":4096},"cost":{"input":0.15,"output":0.3},"updated":"2025-01-01"},"qwen/qwen3-embedding-4b":{"name":"Qwen 3 Embedding 4B","limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0},"updated":"2025-01-01"},"qwen/qwen-2.5-7b-vision-instruct":{"name":"Qwen 2.5 7B Vision Instruct","limit":{"context":125000,"output":4096},"cost":{"input":0.2,"output":0.2},"updated":"2025-01-01"}}},"infer":{"name":"Infer by Flow7","npm":"@ai-sdk/openai","models":{"infer/gpt-5.6-sol:official":{"name":"GPT-5.6 Sol (Official API)","limit":{"context":271999,"output":128000},"cost":{"input":2.5,"output":12.5,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"infer/gpt-6-astra:official":{"name":"GPT-6 Astra (Official API)","limit":{"context":271999,"output":128000},"cost":{"input":12.5,"output":62.5,"cache_read":1.25,"cache_write":15.625},"updated":"2026-09-04"}}},"ovhcloud":{"name":"OVHcloud AI Endpoints","npm":"@ai-sdk/openai-compatible","models":{"qwen3.5-397b-a17b":{"name":"Qwen3.5-397B-A17B","limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":4.25},"updated":"2026-05-18"},"qwen3guard-gen-8b":{"name":"Qwen3Guard-Gen-8B","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"mistral-small-3.2-24b-instruct-2506":{"name":"Mistral-Small-3.2-24B-Instruct-2506","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.31},"updated":"2025-07-16"},"qwen3guard-gen-0.6b":{"name":"Qwen3Guard-Gen-0.6B","limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-01-22"},"qwen2.5-vl-72b-instruct":{"name":"Qwen2.5-VL-72B-Instruct","limit":{"context":32768,"output":32768},"cost":{"input":1.01,"output":1.01},"updated":"2025-03-31"},"mistral-nemo-instruct-2407":{"name":"Mistral-Nemo-Instruct-2407","limit":{"context":65536,"output":65536},"cost":{"input":0.14,"output":0.14},"updated":"2024-11-20"},"qwen3.6-27b":{"name":"Qwen3.6-27B","limit":{"context":262144,"output":262144},"cost":{"input":0.47,"output":3.19},"updated":"2026-06-01"},"gpt-oss-20b":{"name":"gpt-oss-20b","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.18},"updated":"2025-08-28"},"qwen3.8-27b":{"name":"Qwen3.8-27B","limit":{"context":262144,"output":262144},"cost":{"input":0.47,"output":3.19},"updated":"2026-09-02"},"qwen3.5-9b":{"name":"Qwen3.5-9B","limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.18},"updated":"2026-04-22"},"meta-llama-3_3-70b-instruct":{"name":"Meta-Llama-3_3-70B-Instruct","limit":{"context":131072,"output":131072},"cost":{"input":0.74,"output":0.74},"updated":"2025-04-01"},"gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":131072,"output":131072},"cost":{"input":0.09,"output":0.47},"updated":"2025-08-28"}}},"standardcompute":{"name":"Standard Compute","npm":"@ai-sdk/openai-compatible","models":{"standardcompute":{"name":"Standard Compute","limit":{"context":1000000,"output":50000},"updated":"2026-10-13"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":50000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":50000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":50000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":50000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":50000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":50000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":50000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-07-31"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":50000},"cost":{"input":1.044,"output":2.088,"cache_read":0.2088},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":50000},"cost":{"input":0.14,"output":0.42,"cache_read":0.0042},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":50000},"cost":{"input":0.0826,"output":0.1652,"cache_read":0.01652},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":50000},"cost":{"input":1.122,"output":3.366,"cache_read":0.1122},"updated":"2026-08-22"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":50000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":50000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":50000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":50000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":50000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":50000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":50000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":50000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":50000},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":50000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":50000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":50000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":50000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"updated":"2025-06-17"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":50000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":50000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":50000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":50000},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375},"updated":"2025-06-17"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":50000},"cost":{"input":0.08,"output":0.5,"cache_read":0.012},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":50000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":50000},"cost":{"input":0.5625,"output":1.8,"cache_read":0.105},"updated":"2026-06-13"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":50000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"updated":"2026-06-02"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":50000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":50000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.425,"output":2.55,"cache_read":0.085,"cache_write":0.53125},"updated":"2026-08-14"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":50000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":50000},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"updated":"2026-05-21"},"mistralai/mistral-large-4-0":{"name":"Mistral Large 4","limit":{"context":1048576,"output":50000},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"}}},"nano-gpt":{"name":"NanoGPT","npm":"@ai-sdk/openai-compatible","models":{"Gemma-4-26B-A4B-MeroMero":{"name":"Gemma 4 26B A4B MeroMero","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-08-26"},"mistral-code-agent-latest":{"name":"Mistral Code Agent Latest","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2},"updated":"2026-06-02"},"deepseek-v3-0324":{"name":"DeepSeek Chat 0324","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.77,"cache_read":0.135},"updated":"2025-03-24"},"gemma-4-31b-it-isometry":{"name":"Isometry","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"gemini-2.0-pro-reasoner":{"name":"Gemini 2.0 Pro Reasoner","limit":{"context":128000,"output":65536},"cost":{"input":1.292,"output":4.998,"cache_read":0.323},"updated":"2025-02-05"},"glm-4.1v-thinking-flash":{"name":"GLM 4.1V Thinking Flash","limit":{"context":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15},"updated":"2025-07-09"},"gemma-4-31b-it-novelist":{"name":"Novelist","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"glm-4-air-0111":{"name":"GLM 4 Air 0111","limit":{"context":128000,"output":4096},"cost":{"input":0.1394,"output":0.1394,"cache_read":0.0697},"updated":"2025-01-11"},"gemini-2.5-flash-lite-preview-09-2025":{"name":"Gemini 2.5 Flash Lite Preview (09/2025)","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-09-25"},"hermes-high":{"name":"Hermes High","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-05-11"},"auto-model-standard":{"name":"Auto model (Standard)","limit":{"context":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998},"updated":"2024-06-01"},"holo3-35b-a3b":{"name":"Holo3-35B-A3B","limit":{"context":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125},"updated":"2024-01-01"},"gemma-4-12b-it":{"name":"Gemma 4 12B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"updated":"2026-06-09"},"deepseek-chat-cheaper":{"name":"DeepSeek V3/Chat Cheaper","limit":{"context":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05},"updated":"2025-04-15"},"claw-high":{"name":"Claw High","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-05-11"},"deepseek-r1-sambanova":{"name":"DeepSeek R1 Fast","limit":{"context":128000,"output":4096},"cost":{"input":4.998,"output":6.987,"cache_read":2.499},"updated":"2025-02-20"},"glm-4-long":{"name":"GLM-4 Long","limit":{"context":1000000,"output":4095},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003},"updated":"2024-08-01"},"gemma-4-26b-a4b-it-shadowsiren":{"name":"Shadow Siren","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"phi-4-multimodal-instruct":{"name":"Phi 4 Multimodal","limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.11,"cache_read":0.035},"updated":"2025-07-26"},"gemini-2.5-flash-lite-preview-09-2025-thinking":{"name":"Gemini 2.5 Flash Lite Preview (09/2025) – Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-09-25"},"Gemma-4-31B-MeroMero-v2":{"name":"Gemma 4 31B MeroMero v2","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-08-23"},"gemini-2.5-pro-exp-03-25":{"name":"Gemini 2.5 Pro Experimental 0325","limit":{"context":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25},"updated":"2025-03-25"},"Meta-Llama-3-1-8B-Instruct-FP8":{"name":"Llama 3.1 8B (decentralized)","limit":{"context":128000,"output":16384},"cost":{"input":0.02,"output":0.03,"cache_read":0.01},"updated":"2024-07-23"},"gemini-2.5-pro-preview-06-05":{"name":"Gemini 2.5 Pro Preview 0605","limit":{"context":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25},"updated":"2025-06-05"},"glm-4-plus-0111":{"name":"GLM 4 Plus 0111","limit":{"context":128000,"output":4096},"cost":{"input":9.996,"output":9.996,"cache_read":4.998},"updated":"2025-02-19"},"ernie-5.1:thinking":{"name":"ERNIE 5.1 Thinking","limit":{"context":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75},"updated":"2026-05-10"},"gemma-4-26b-a4b-it-opusdistill":{"name":"Opus Distill","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{"name":"Gemma 4 31B Claude 4.6 Opus Reasoning Distilled","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.0306},"updated":"2026-05-01"},"gemma-4-12b-it-semancer":{"name":"Gemma 4 12B Semancer","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"updated":"2026-09-09"},"phi-4-mini-instruct":{"name":"Phi 4 Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.17,"output":0.68,"cache_read":0.085},"updated":"2025-07-26"},"gemini-exp-1206":{"name":"Gemini 2.0 Pro 1206","limit":{"context":2097152,"output":8192},"cost":{"input":1.258,"output":4.998,"cache_read":0.629},"updated":"2024-12-06"},"auto-model-basic":{"name":"Auto model (Basic)","limit":{"context":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998},"updated":"2024-06-01"},"longcat-2.5-preview":{"name":"LongCat 2.5 Preview","limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"updated":"2026-09-25"},"universal-summarizer":{"name":"Universal Summarizer","limit":{"context":32768,"output":32768},"cost":{"input":30,"output":30},"updated":"2024-01-01"},"celeris-1":{"name":"Celeris 1","limit":{"context":8192,"output":8192},"cost":{"input":2,"output":6,"cache_read":1},"updated":"2026-07-25"},"glm-z1-airx":{"name":"GLM Z1 AirX","limit":{"context":32000,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-04-15"},"Gemma-4-31B-Queen":{"name":"Gemma 4 31B Queen","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-05-01"},"Qwen3.5-27B-Queen-Derestricted":{"name":"Qwen3.5 27B Queen Derestricted","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-04-30"},"ernie-5.1":{"name":"ERNIE 5.1","limit":{"context":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75},"updated":"2026-05-10"},"longcat-2.0:thinking":{"name":"LongCat 2.0 Thinking","limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":3,"cache_read":0.015},"updated":"2026-06-30"},"gemma-4-26b-a4b-it-musica":{"name":"Musica","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"gemini-2.0-pro-exp-02-05":{"name":"Gemini 2.0 Pro 0205","limit":{"context":2097152,"output":8192},"cost":{"input":1.989,"output":7.956,"cache_read":0.49725},"updated":"2025-02-05"},"gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"gemini-2.5-pro-preview-05-06":{"name":"Gemini 2.5 Pro Preview 0506","limit":{"context":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25},"updated":"2025-05-06"},"auto-model-premium":{"name":"Auto model (Premium)","limit":{"context":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998},"updated":"2024-06-01"},"deepseek-reasoner-cheaper":{"name":"Deepseek R1 Cheaper","limit":{"context":128000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2},"updated":"2025-01-20"},"doubao-seed-2-0-lite-260215":{"name":"Doubao Seed 2.0 Lite","limit":{"context":256000,"output":32000},"cost":{"input":0.1462,"output":0.8738,"cache_read":0.0731},"updated":"2026-02-14"},"gemma-4-12b-it-station-keeper":{"name":"Gemma 4 12B StationKeeper","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"updated":"2026-09-09"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"gemma-4-31b-it-gembrain":{"name":"Gembrain","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"gemma-4-26b-a4b-it-chimeraxheretic":{"name":"Gemma 4 26B A4B Chimera X Heretic","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-10-08"},"ernie-5.0-thinking-preview":{"name":"Ernie 5.0 Thinking Preview","limit":{"context":128000,"output":16384},"cost":{"input":1,"output":3.5,"cache_read":0.5},"updated":"2025-11-18"},"gemini-2.5-flash-preview-04-17":{"name":"Gemini 2.5 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2025-04-17"},"deepseek-r1":{"name":"DeepSeek R1","limit":{"context":128000,"output":8192},"cost":{"input":0.4,"output":1.7,"cache_read":0.2},"updated":"2025-05-29"},"Gemma-4-31B-Cognitive-Unshackled":{"name":"Gemma 4 31B Cognitive Unshackled","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-05-01"},"gemma-4-31b-it-gemsicle":{"name":"Gemsicle","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"Gemma-4-26B-A4B-MeroMero:thinking":{"name":"Gemma 4 26B A4B MeroMero Thinking","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-08-26"},"nano-gpt-help":{"name":"NanoGPT Help","limit":{"context":6000,"output":512},"cost":{"input":0,"output":0},"updated":"2026-06-06"},"gemini-3-pro-image-preview":{"name":"Gemini 3 Pro Image","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-20"},"mistral-code-latest":{"name":"Mistral Code Latest","limit":{"context":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15},"updated":"2026-06-02"},"pokee-isaac":{"name":"Pokee-Isaac 28B","limit":{"context":10000000,"output":60000},"cost":{"input":0.15,"output":1,"cache_read":0.075},"updated":"2026-08-04"},"gemini-2.5-pro-preview-03-25":{"name":"Gemini 2.5 Pro Preview 0325","limit":{"context":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25},"updated":"2025-03-25"},"GLM-4.6-Derestricted-v5":{"name":"GLM 4.6 Derestricted v5","limit":{"context":131072,"output":8192},"cost":{"input":0.4,"output":1.5,"cache_read":0.2},"updated":"2025-12-23"},"gemini-2.5-flash-preview-09-2025-thinking":{"name":"Gemini 2.5 Flash Preview (09/2025) – Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-09-25"},"holo3-35b-a3b:thinking":{"name":"Holo3-35B-A3B Thinking","limit":{"context":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125},"updated":"2024-01-01"},"fastgpt":{"name":"Web Answer","limit":{"context":32768,"output":32768},"cost":{"input":7.5,"output":7.5},"updated":"2024-01-01"},"claw-low":{"name":"Claw Low","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2,"cache_write":0.08333},"updated":"2026-05-11"},"glm-4.1v-thinking-flashx":{"name":"GLM 4.1V Thinking FlashX","limit":{"context":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15},"updated":"2025-07-09"},"doubao-1.5-pro-32k":{"name":"Doubao 1.5 Pro 32k","limit":{"context":32000,"output":8192},"cost":{"input":0.1343,"output":0.3349,"cache_read":0.06715},"updated":"2025-01-22"},"asi1-mini":{"name":"ASI1 Mini","limit":{"context":128000,"output":16384},"cost":{"input":1,"output":1,"cache_read":0.5},"updated":"2025-03-25"},"Gemma-4-31B-GarnetV2":{"name":"Gemma 4 31B Garnet V2","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-05-01"},"kimi-k2-instruct-fast":{"name":"Kimi K2 0711 Fast","limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"updated":"2025-07-15"},"Qwen3.5-27B-BlueStar-v3-Derestricted":{"name":"Qwen3.5 27B BlueStar v3 Derestricted","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-04-30"},"gemma-4-31b-it-fabled":{"name":"Fabled","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"qvq-max":{"name":"Qwen: QvQ Max","limit":{"context":128000,"output":8192},"cost":{"input":1.2,"output":4.8,"cache_read":0.6},"updated":"2025-03-28"},"gemini-2.5-flash-preview-04-17:thinking":{"name":"Gemini 2.5 Flash Preview Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015},"updated":"2025-04-17"},"gemma-4-31b-it-darkidol":{"name":"DarkIdol","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"gemma-4-31b-it-scarlet":{"name":"Gemma 4 31B Scarlet","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-10-08"},"agnes-3.0-flash":{"name":"Agnes 3.0 Flash","limit":{"context":524288,"output":65536},"cost":{"input":0.05,"output":0.15,"cache_read":0.005},"updated":"2026-09-09"},"doubao-seed-2-0-code-preview-260215":{"name":"Doubao Seed 2.0 Code Preview","limit":{"context":256000,"output":128000},"cost":{"input":0.782,"output":3.893,"cache_read":0.391},"updated":"2026-02-14"},"gemini-2.5-flash-preview-05-20:thinking":{"name":"Gemini 2.5 Flash 0520 Thinking","limit":{"context":1048000,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015},"updated":"2025-05-20"},"mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025},"updated":"2026-03-04"},"qwen3-vl-235b-a22b-instruct-original":{"name":"Qwen3 VL 235B A22B Instruct Original","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":1.9,"cache_read":0.15},"updated":"2025-09-25"},"sarvam-105b":{"name":"Sarvam 105B","limit":{"context":131072,"output":4096},"cost":{"input":0.054,"output":0.2124,"cache_read":0.0336},"updated":"2025-09-01"},"auto-model":{"name":"Auto model","limit":{"context":1000000,"output":1000000},"cost":{"input":0,"output":0},"updated":"2024-06-01"},"doubao-seed-2-0-pro-260215":{"name":"Doubao Seed 2.0 Pro","limit":{"context":256000,"output":128000},"cost":{"input":0.782,"output":3.876,"cache_read":0.391},"updated":"2026-02-14"},"gemma-4-26b-a4b-it-moonlight":{"name":"Moonlight Dusk","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"doubao-seed-2-0-mini-260215":{"name":"Doubao Seed 2.0 Mini","limit":{"context":256000,"output":32000},"cost":{"input":0.0493,"output":0.4845,"cache_read":0.02465},"updated":"2026-02-14"},"hermes-medium":{"name":"Hermes Medium","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-05-11"},"command-a-reasoning-08-2025":{"name":"Cohere Command A (08/2025)","limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2025-08-21"},"gemini-2.5-flash-nothinking":{"name":"Gemini 2.5 Flash (No Thinking)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-05"},"claw-medium":{"name":"Claw Medium","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-05-11"},"longcat-2.0":{"name":"LongCat 2.0","limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":3,"cache_read":0.015},"updated":"2026-06-30"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375},"updated":"2025-06-17"},"gemini-2.5-flash-preview-09-2025":{"name":"Gemini 2.5 Flash Preview (09/2025)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-09-25"},"gemma-4-31b-it-garnet":{"name":"Garnet","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-07-29"},"Gemma-4-31B-MeroMero-v2:thinking":{"name":"Gemma 4 31B MeroMero v2 Thinking","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-08-24"},"gemma-4-26b-a4b-it-luminous":{"name":"Luminous Mirror","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"deepseek-reasoner":{"name":"DeepSeek Reasoner","limit":{"context":64000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2},"updated":"2026-02-28"},"doubao-1.5-vision-pro-32k":{"name":"Doubao 1.5 Vision Pro 32k","limit":{"context":32000,"output":8192},"cost":{"input":0.459,"output":1.377,"cache_read":0.2295},"updated":"2025-01-22"},"venice-uncensored":{"name":"Venice Uncensored","limit":{"context":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.4},"updated":"2025-02-24"},"gemma-4-26b-a4b-it-chimerax":{"name":"Chimera X","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"mercury-coder-small":{"name":"Mercury Coder Small","limit":{"context":32768,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125},"updated":"2024-01-01"},"doubao-1.5-pro-256k":{"name":"Doubao 1.5 Pro 256k","limit":{"context":256000,"output":16384},"cost":{"input":0.799,"output":1.445,"cache_read":0.3995},"updated":"2025-03-12"},"Gemma-4-31B-DarkIdol":{"name":"Gemma 4 31B DarkIdol","limit":{"context":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153},"updated":"2026-05-01"},"deepseek-chat":{"name":"DeepSeek V3/Deepseek Chat","limit":{"context":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05},"updated":"2026-02-28"},"MiniMax-M1":{"name":"MiniMax M1","limit":{"context":1000000,"output":131072},"cost":{"input":0.1394,"output":1.3328,"cache_read":0.0697},"updated":"2025-06-16"},"gemma-4-26b-a4b-it-darksoul":{"name":"Dark Soul","limit":{"context":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"updated":"2026-07-29"},"gemini-2.5-flash-lite-preview-06-17":{"name":"Gemini 2.5 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2025-06-17"},"hermes-low":{"name":"Hermes Low","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2,"cache_write":0.08333},"updated":"2026-05-11"},"gemini-2.5-flash-preview-05-20":{"name":"Gemini 2.5 Flash 0520","limit":{"context":1048000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2025-05-20"},"mlabonne/NeuralDaredevil-8B-abliterated":{"name":"Neural Daredevil 8B abliterated","limit":{"context":8192,"output":8192},"cost":{"input":0.44,"output":0.44,"cache_read":0.22},"updated":"2024-12-01"},"abliteration-ai/abliterated-model-large-v2":{"name":"Abliterated Model Large V2","limit":{"context":1000000,"output":999990},"cost":{"input":3,"output":5,"cache_read":0.3},"updated":"2026-08-31"},"abliteration-ai/abliterated-model-large":{"name":"Abliterated Model Large","limit":{"context":1000000,"output":999990},"cost":{"input":3,"output":5,"cache_read":0.3},"updated":"2026-08-27"},"abliteration-ai/abliterated-model":{"name":"Abliterated Model","limit":{"context":262144,"output":262134},"cost":{"input":1,"output":3,"cache_read":0.1},"updated":"2026-08-27"},"fireworks/ember-1":{"name":"Ember 1","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-22"},"sakana/fugu-ultra-v1.1":{"name":"Fugu Ultra v1.1","limit":{"context":1000000,"output":16384},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-07-24"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":16384},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"meta-llama/llama-3.3-70b-instruct":{"name":"Llama 3.3 70b Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.23,"cache_read":0.025},"updated":"2024-12-06"},"meta-llama/llama-4-maverick":{"name":"Llama 4 Maverick","limit":{"context":1048576,"output":65536},"cost":{"input":0.1875,"output":0.6525,"cache_read":0.05},"updated":"2025-09-05"},"meta-llama/llama-4-scout":{"name":"Llama 4 Scout","limit":{"context":328000,"output":65536},"cost":{"input":0.085,"output":0.46,"cache_read":0.0425},"updated":"2025-09-05"},"meta-llama/llama-3.2-3b-instruct":{"name":"Llama 3.2 3b Instruct","limit":{"context":131072,"output":8192},"cost":{"input":0.0306,"output":0.0493,"cache_read":0.0153},"updated":"2024-09-25"},"meta-llama/llama-3.1-8b-instruct":{"name":"Llama 3.1 8b Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.02,"output":0.04,"cache_read":0.0272},"updated":"2024-07-23"},"reflection/beam-1.0":{"name":"Beam 1.0 501B A23B","limit":{"context":1048576,"output":131072},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2026-10-16"},"minimax/minimax-m2.7-turbo":{"name":"MiniMax M2.7 Turbo","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06},"updated":"2026-03-18"},"minimax/minimax-m2-her":{"name":"MiniMax M2-her","limit":{"context":65532,"output":2048},"cost":{"input":0.302,"output":1.207,"cache_read":0.151},"updated":"2026-01-23"},"minimax/minimax-m2":{"name":"MiniMax M2","limit":{"context":200000,"output":131072},"cost":{"input":0.17,"output":1.53,"cache_read":0.085},"updated":"2025-10-27"},"minimax/minimax-latest":{"name":"MiniMax Latest","limit":{"context":512000,"output":80000},"cost":{"input":0.23,"output":0.96,"cache_read":0.05},"updated":"2026-05-03"},"minimax/minimax-m2.1":{"name":"MiniMax M2.1","limit":{"context":200000,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.03},"updated":"2025-12-23"},"minimax/minimax-m3:thinking":{"name":"MiniMax M3 Thinking","limit":{"context":512000,"output":80000},"cost":{"input":0.23,"output":0.96,"cache_read":0.05},"updated":"2026-06-01"},"minimax/minimax-01":{"name":"MiniMax 01","limit":{"context":1000192,"output":16384},"cost":{"input":0.1394,"output":1.122,"cache_read":0.0697},"updated":"2025-01-15"},"minimax/minimax-m2.5":{"name":"MiniMax M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.27,"output":1.08,"cache_read":0.027},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax M3","limit":{"context":512000,"output":80000},"cost":{"input":0.23,"output":0.96,"cache_read":0.05},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.21,"output":0.84,"cache_read":0.042},"updated":"2026-03-18"},"anthracite-org/magnum-v2-72b":{"name":"Magnum V2 72B","limit":{"context":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003},"updated":"2024-07-01"},"anthracite-org/magnum-v4-72b":{"name":"Magnum v4 72B","limit":{"context":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003},"updated":"2024-10-22"},"inflatebot/MN-12B-Mag-Mell-R1":{"name":"Mag Mell R1","limit":{"context":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-01"},"cohere/command-r-plus-08-2024":{"name":"Cohere: Command R+","limit":{"context":128000,"output":4096},"cost":{"input":2.856,"output":14.246,"cache_read":1.428},"updated":"2024-08-30"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"updated":"2026-09-20"},"stepfun/step-3.7-flash:thinking":{"name":"Step 3.7 Flash Thinking","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"unsloth/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":128000,"output":96000},"cost":{"input":0.2992,"output":0.2992,"cache_read":0.1496},"updated":"2025-03-10"},"unsloth/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":128000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003},"updated":"2025-03-10"},"unsloth/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":16384},"cost":{"input":0.272,"output":0.272,"cache_read":0.136},"updated":"2025-03-10"},"TEE/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.55,"output":3.5,"cache_read":0.275},"updated":"2026-02-15"},"TEE/glm-5.3-flash":{"name":"GLM 5.3 Flash TEE","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"TEE/gemma-4-26b-a4b-uncensored":{"name":"Gemma 4 26B A4B Uncensored TEE","limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":0.7,"cache_read":0.075},"updated":"2026-05-23"},"TEE/glm-5.3":{"name":"GLM 5.3 TEE","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"TEE/nemotron-3.5-lightning":{"name":"Nvidia Nemotron 3.5 Lightning TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.08,"output":0.2,"cache_read":0.04},"updated":"2026-08-11"},"TEE/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B TEE","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.27,"cache_read":0.1},"updated":"2026-04-17"},"TEE/qwen2.5-vl-72b-instruct":{"name":"Qwen2.5 VL 72B TEE","limit":{"context":65536,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-02-01"},"TEE/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash TEE","limit":{"context":1048576,"output":384000},"cost":{"input":0.65,"output":1.45,"cache_read":0.13},"updated":"2026-09-10"},"TEE/glm-5.2":{"name":"GLM 5.2 TEE","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.7},"updated":"2026-06-13"},"TEE/gemma4-31b":{"name":"Gemma 4 31B","limit":{"context":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4},"updated":"2026-04-04"},"TEE/qwen3.5-27b":{"name":"Qwen3.5 27B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4,"cache_read":0.15},"updated":"2026-02-23"},"TEE/qwen3.6-27b":{"name":"Qwen3.6 27B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":2.7,"cache_read":0.16},"updated":"2026-04-22"},"TEE/deepseek-v3.2":{"name":"DeepSeek V3.2 TEE","limit":{"context":164000,"output":65536},"cost":{"input":0.5,"output":1,"cache_read":0.25},"updated":"2025-12-01"},"TEE/kimi-k2.7-code":{"name":"Kimi K2.7 Code TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"TEE/glm-5.1":{"name":"GLM 5.1 TEE","limit":{"context":202752,"output":65535},"cost":{"input":0.7,"output":2.5,"cache_read":0.18},"updated":"2026-04-07"},"TEE/qwen3.8-27b":{"name":"Qwen3.8 27B TEE","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15},"updated":"2026-08-14"},"TEE/gemma-4-31b-it":{"name":"Gemma 4 31B IT TEE","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.46,"cache_read":0.075},"updated":"2026-04-02"},"TEE/kimi-k2.6":{"name":"Kimi K2.6 TEE","limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":5.25,"cache_read":0.375},"updated":"2026-04-21"},"TEE/glm-5.2:thinking":{"name":"GLM 5.2 Thinking TEE","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.7},"updated":"2026-06-13"},"TEE/muse-glimmer-30b":{"name":"Muse Glimmer 30B TEE","limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-08-10"},"TEE/kimi-k3":{"name":"Kimi K3 TEE","limit":{"context":1048576,"output":65535},"cost":{"input":3,"output":15,"cache_read":1.5},"updated":"2026-07-16"},"TEE/glm-5.1-thinking":{"name":"GLM 5.1 Thinking TEE","limit":{"context":202752,"output":65535},"cost":{"input":0.7,"output":2.5,"cache_read":0.18},"updated":"2026-04-07"},"TEE/gpt-oss-120b":{"name":"GPT-OSS 120B TEE","limit":{"context":131072,"output":16384},"cost":{"input":2,"output":2,"cache_read":2},"updated":"2025-08-05"},"TEE/gemma4-31b:thinking":{"name":"Gemma 4 31B Thinking TEE","limit":{"context":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4},"updated":"2026-05-02"},"TEE/llama3-3-70b":{"name":"Llama 3.3 70B","limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":2.75,"cache_read":1.75},"updated":"2025-07-03"},"heabsy/cyberheabsy":{"name":"CyberHeabsy","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":4.5,"cache_read":0.275},"updated":"2026-09-27"},"heabsy/qwen3.8-27b-uncensored-fast":{"name":"Qwen 3.8 27B Uncensored Fast by Heabsy","limit":{"context":524288,"output":235929},"cost":{"input":1,"output":3,"cache_read":0.22},"updated":"2026-10-16"},"inference-net/schematron-v2-small":{"name":"Schematron V2 Small","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.025},"updated":"2026-09-12"},"inference-net/schematron-v2-turbo":{"name":"Schematron V2 Turbo","limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.015},"updated":"2026-09-12"},"inclusionai/ling-3.1-flash":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-29"},"inclusionai/ling-3.0-flash:thinking":{"name":"Ling 3.0 Flash Thinking","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-07-23"},"inclusionai/ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-09-10"},"inclusionai/ling-3.0-flash":{"name":"Ling 3.0 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-07-23"},"openai/o1":{"name":"OpenAI o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/o3-pro-2025-06-10":{"name":"OpenAI o3-pro (2025-06-10)","limit":{"context":200000,"output":100000},"cost":{"input":22,"output":88,"cache_read":11},"updated":"2025-06-10"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT 6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.6-terra-pro":{"name":"GPT 5.6 Terra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-5":{"name":"GPT 5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.6-sol-pro":{"name":"GPT 5.6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT 5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT 5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-luna-latest":{"name":"GPT Luna Latest","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-11"},"openai/o4-mini":{"name":"OpenAI o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT 5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/o3-mini-low":{"name":"OpenAI o3-mini (Low)","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-31"},"openai/gpt-4.1-mini":{"name":"GPT 4.1 Mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-sol-latest":{"name":"GPT Sol Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-11"},"openai/gpt-5.6-sol":{"name":"GPT 5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT 4.1 Nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-astra-latest":{"name":"GPT Astra Latest","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-11"},"openai/gpt-5-nano":{"name":"GPT 5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5-pro":{"name":"GPT 5 Pro","limit":{"context":400000,"output":128000},"cost":{"input":15,"output":120,"cache_read":1.5},"updated":"2025-10-06"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5 Turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-5.1-codex-max":{"name":"GPT 5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25},"updated":"2025-11-13"},"openai/gpt-5.4":{"name":"GPT 5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":16384},"cost":{"input":0.02,"output":0.1},"updated":"2025-08-05"},"openai/gpt-5.1-2025-11-13":{"name":"GPT-5.1 (2025-11-13)","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/o1-pro":{"name":"OpenAI o1 Pro","limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600,"cache_read":75},"updated":"2025-03-19"},"openai/gpt-6-astra-pro":{"name":"GPT 6 Astra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.2":{"name":"GPT 5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5.6-luna-pro":{"name":"GPT 5.6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-latest":{"name":"GPT Latest","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-03-29"},"openai/gpt-terra-latest":{"name":"GPT Terra Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-11"},"openai/gpt-5-mini":{"name":"GPT 5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT 5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-6-luna":{"name":"GPT 6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"OpenAI o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/o4-mini-high":{"name":"OpenAI o4-mini high","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-04-16"},"openai/gpt-6-luna-pro":{"name":"GPT 6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-chat-latest":{"name":"GPT Chat Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-05-03"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol-pro":{"name":"GPT 6.1 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":16384},"cost":{"input":0.03,"output":0.15,"cache_read":0.03},"updated":"2025-08-05"},"openai/gpt-5.1-codex-mini":{"name":"GPT 5.1 Codex Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.3},"updated":"2025-10-29"},"openai/gpt-5.1":{"name":"GPT 5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT 6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.1-codex":{"name":"GPT 5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.4-nano":{"name":"GPT 5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT 5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT 6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT 4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3-mini-high":{"name":"OpenAI o3-mini (High)","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-31"},"openai/gpt-5.2-codex":{"name":"GPT 5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/o3":{"name":"OpenAI o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":1},"updated":"2025-04-16"},"openai/gpt-6-sol-pro":{"name":"GPT 6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"pamanseau/OpenReasoning-Nemotron-32B":{"name":"OpenReasoning Nemotron 32B","limit":{"context":32768,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2025-08-21"},"meta/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor (Data Used for Training)","limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-05"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":117964},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-08-10"},"meta/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"x-ai/grok-4.20":{"name":"Grok 4.20","limit":{"context":2000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-latest":{"name":"Grok Latest","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-05-03"},"x-ai/grok-4.20-multi-agent":{"name":"Grok 4.20 Multi-Agent","limit":{"context":2000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"lightonai/LightOnOCR-2-1B":{"name":"LightOnOCR 2","limit":{"context":32768,"output":8192},"cost":{"input":0.1785,"output":0.3465},"updated":"2026-09-10"},"NeverSleep/Lumimaid-v0.2-70B":{"name":"Lumimaid v0.2","limit":{"context":16384,"output":8192},"cost":{"input":1,"output":1.5,"cache_read":0.5},"updated":"2024-07-01"},"bytedance-seed/seed-2-1-turbo":{"name":"ByteDance Seed 2.1 Turbo","limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"updated":"2026-08-12"},"bytedance-seed/seed-2.0-code":{"name":"ByteDance Seed 2.0 Code","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.25},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-lite":{"name":"ByteDance Seed 2.0 Lite","limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2,"cache_read":0.125},"updated":"2026-02-14"},"deepcogito/cogito-v1-preview-qwen-32B":{"name":"Cogito v1 Preview Qwen 32B","limit":{"context":128000,"output":32768},"cost":{"input":1.8,"output":1.8,"cache_read":0.9},"updated":"2025-05-10"},"LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{"name":"Llama 3.3 70B Wayfarer","limit":{"context":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-02-20"},"MiniMaxAI/MiniMax-M1-80k":{"name":"MiniMax M1 80K","limit":{"context":1000000,"output":131072},"cost":{"input":0.6052,"output":2.4225,"cache_read":0.3026},"updated":"2025-06-16"},"deepseek/deepseek-v4-pro:thinking":{"name":"DeepSeek V4 Pro (Thinking)","limit":{"context":1048576,"output":384000},"cost":{"input":0.7,"output":1.4,"cache_read":0.07},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":131072},"cost":{"input":0.05,"output":0.16,"cache_read":0.013},"updated":"2026-07-31"},"deepseek/deepseek-v3.2:thinking":{"name":"DeepSeek V3.2 Thinking","limit":{"context":163000,"output":65536},"cost":{"input":0.2088,"output":0.3096,"cache_read":0.0216},"updated":"2025-12-01"},"deepseek/deepseek-v4-pro-0813:thinking":{"name":"DeepSeek V4 Pro 0813 Thinking","limit":{"context":1048576,"output":384000},"cost":{"input":0.1452,"output":0.4356,"cache_read":0.00462},"updated":"2026-08-22"},"deepseek/deepseek-v4-flash-0423":{"name":"DeepSeek V4 Flash 0423","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-23"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":0.7,"output":1.4,"cache_read":0.07},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":393216},"cost":{"input":0.1,"output":0.5,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.42,"cache_read":0.0042},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":384000},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.00686},"updated":"2026-09-01"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163000,"output":65536},"cost":{"input":0.2088,"output":0.3096,"cache_read":0.0216},"updated":"2025-12-01"},"deepseek/deepseek-v4-flash-0423:thinking":{"name":"DeepSeek V4 Flash 0423 (Thinking)","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-23"},"deepseek/deepseek-v4.1-flash-1017:thinking":{"name":"DeepSeek V4.1 Flash 1017 Thinking","limit":{"context":1048576,"output":393216},"cost":{"input":0.1,"output":0.5,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":0.1452,"output":0.4356,"cache_read":0.00462},"updated":"2026-08-22"},"deepseek/deepseek-v4-flash-0731:thinking":{"name":"DeepSeek V4 Flash 0731 (Thinking)","limit":{"context":1048576,"output":131072},"cost":{"input":0.05,"output":0.16,"cache_read":0.013},"updated":"2026-07-31"},"deepseek/deepseek-v4-flash:thinking":{"name":"DeepSeek V4 Flash (Thinking)","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash:thinking":{"name":"DeepSeek V4.1 Flash Thinking","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.42,"cache_read":0.0042},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-latest":{"name":"DeepSeek V4 Flash Latest","limit":{"context":1048576,"output":393216},"cost":{"input":0.1,"output":0.5,"cache_read":0.003},"updated":"2026-08-02"},"deepseek/deepseek-latest":{"name":"DeepSeek Latest","limit":{"context":1048576,"output":384000},"cost":{"input":0.1452,"output":0.4356,"cache_read":0.00462},"updated":"2026-05-03"},"moondream/moondream3-preview":{"name":"Moondream 3 Preview","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-16"},"moondream/moondream3.1-9b-a2b":{"name":"Moondream 3.1 9B A2B","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-16"},"meganova-ai/manta-mini-1.0":{"name":"Manta Mini 1.0","limit":{"context":8192,"output":8192},"cost":{"input":0.02,"output":0.16,"cache_read":0.01},"updated":"2025-12-20"},"meganova-ai/manta-flash-1.0":{"name":"Manta Flash 1.0","limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.16,"cache_read":0.01},"updated":"2025-12-20"},"meganova-ai/manta-pro-1.0":{"name":"Manta Pro 1.0","limit":{"context":65536,"output":32768},"cost":{"input":0.06,"output":0.5,"cache_read":0.03},"updated":"2025-12-20"},"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{"name":"EVA-Qwen2.5-72B-v0.2","limit":{"context":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995},"updated":"2025-09-25"},"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{"name":"EVA-Qwen2.5-32B-v0.2","limit":{"context":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995},"updated":"2025-07-26"},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{"name":"EVA-LLaMA-3.33-70B-v0.1","limit":{"context":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003},"updated":"2025-09-25"},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{"name":"EVA Llama 3.33 70B","limit":{"context":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003},"updated":"2025-07-26"},"VongolaChouko/Starcannon-Unleashed-12B-v1.0":{"name":"Mistral Nemo Starcannon 12b v1","limit":{"context":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-01"},"unbiased/pareto-26.9":{"name":"Pareto 26.9","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"updated":"2026-09-18"},"unbiased/pareto-26.10":{"name":"Pareto 26.10","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03},"updated":"2026-10-01"},"aion-labs/aion-3.5-mini":{"name":"AionLabs: Aion 3.5 Mini","limit":{"context":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-09-23"},"aion-labs/aion-3.5":{"name":"AionLabs: Aion 3.5","limit":{"context":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-09-23"},"aion-labs/aion-3.0":{"name":"AionLabs: Aion 3.0","limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-07-07"},"aion-labs/aion-rp-llama-3.1-8b":{"name":"Llama 3.1 8b (uncensored)","limit":{"context":32768,"output":16384},"cost":{"input":0.8,"output":1.6,"cache_read":0.4},"updated":"2025-02-04"},"aion-labs/aion-2.0":{"name":"AionLabs: Aion-2.0","limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2},"updated":"2026-02-23"},"aion-labs/aion-3.0-mini":{"name":"AionLabs: Aion 3.0 Mini","limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-07-07"},"MarinaraSpaghetti/NemoMix-Unleashed-12B":{"name":"NemoMix 12B Unleashed","limit":{"context":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-01"},"amazon/nova-lite-v1":{"name":"Amazon Nova Lite 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.0595,"output":0.238,"cache_read":0.02975},"updated":"2024-12-05"},"amazon/nova-2-lite-v1":{"name":"Amazon Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.51,"output":4.25,"cache_read":0.255},"updated":"2025-12-02"},"amazon/nova-pro-v1":{"name":"Amazon Nova Pro 1.0","limit":{"context":300000,"output":32000},"cost":{"input":0.799,"output":3.196,"cache_read":0.3995},"updated":"2024-12-05"},"prism-ml/ternary-bonsai-2-27b":{"name":"Ternary Bonsai 2 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375},"updated":"2026-09-18"},"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{"name":"Llama 3.1 70B Celeste v0.1","limit":{"context":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-23"},"inception/mercury-2.5-preview":{"name":"Mercury 2.5 Preview","limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004},"updated":"2026-09-01"},"shisa-ai/shisa-v2.1-llama3.3-70b":{"name":"Shisa V2.1 Llama 3.3 70B","limit":{"context":32768,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.25},"updated":"2024-12-06"},"shisa-ai/shisa-v2-llama3.3-70b":{"name":"Shisa V2 Llama 3.3 70B","limit":{"context":128000,"output":16384},"cost":{"input":0.5,"output":0.5,"cache_read":0.25},"updated":"2025-07-26"},"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{"name":"MS3.2 24B Magnum Diamond","limit":{"context":32768,"output":32768},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2025-11-24"},"soob3123/Veiled-Calla-12B":{"name":"Veiled Calla 12B","limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15},"updated":"2025-04-13"},"soob3123/amoral-gemma3-27B-v2":{"name":"Amoral Gemma3 27B v2","limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15},"updated":"2025-05-23"},"nvidia/nemotron-3.5-lightning:thinking":{"name":"Nvidia Nemotron 3.5 Lightning Thinking","limit":{"context":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"updated":"2026-08-11"},"nvidia/Llama-3.3-Nemotron-Super-49B-v1":{"name":"Nvidia Nemotron Super 49B","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.15,"cache_read":0.075},"updated":"2025-08-08"},"nvidia/nemotron-3.5-lightning":{"name":"Nvidia Nemotron 3.5 Lightning","limit":{"context":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b":{"name":"Nvidia Nemotron 3 Super 120B","limit":{"context":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"updated":"2026-03-01"},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{"name":"Nvidia Nemotron 70b","limit":{"context":16384,"output":8192},"cost":{"input":0.357,"output":0.408,"cache_read":0.1785},"updated":"2025-04-15"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nvidia Nemotron 3 Ultra 550B","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"updated":"2026-06-04"},"nvidia/nemotron-3-super-120b-a12b:thinking":{"name":"Nvidia Nemotron 3 Super 120B Thinking","limit":{"context":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"updated":"2026-03-01"},"nvidia/nemotron-3.5-super-vl":{"name":"Nvidia Nemotron 3.5 Super VL","limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.5,"cache_read":0.02},"updated":"2026-10-15"},"nvidia/nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.025},"updated":"2026-06-04"},"nvidia/nemotron-3-ultra-550b-a55b:thinking":{"name":"Nvidia Nemotron 3 Ultra 550B Thinking","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"updated":"2026-06-04"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nvidia Nemotron 3 Nano 30B","limit":{"context":262144,"output":235929},"cost":{"input":0.17,"output":0.68,"cache_read":0.085},"updated":"2025-12-15"},"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{"name":"Llama 3.05 Storybreaker Ministral 70b","limit":{"context":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-01"},"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{"name":"Nemotron Tenyxchat Storybreaker 70b","limit":{"context":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-01"},"GalrionSoftworks/MN-LooseCannon-12B-v1":{"name":"MN-LooseCannon-12B-v1","limit":{"context":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-01"},"stepfun-ai/step-3.5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"stepfun-ai/step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2026-02-13"},"poolside/laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01},"updated":"2026-07-21"},"poolside/laguna-s-2.1:thinking":{"name":"Laguna S 2.1 Thinking","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01},"updated":"2026-07-21"},"arcee-ai/trinity-large-thinking":{"name":"Trinity Large Thinking","limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.9,"cache_read":0.125},"updated":"2026-05-28"},"nanogpt/coding-router:medium":{"name":"Coding Router Medium","limit":{"context":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-05-12"},"nanogpt/coding-router:high":{"name":"Coding Router High","limit":{"context":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11},"updated":"2026-05-12"},"nanogpt/coding-router:max":{"name":"Coding Router Max","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-12"},"nanogpt/coding-router":{"name":"Coding Router","limit":{"context":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11},"updated":"2026-05-12"},"nanogpt/coding-router:low":{"name":"Coding Router Low","limit":{"context":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-05-12"},"Sao10K/L3.1-70B-Euryale-v2.2":{"name":"Llama 3.1 70B Euryale","limit":{"context":20480,"output":16384},"cost":{"input":0.306,"output":0.357,"cache_read":0.153},"updated":"2024-07-23"},"Sao10K/L3-8B-Stheno-v3.2":{"name":"Sao10K Stheno 8b","limit":{"context":16384,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003},"updated":"2024-11-29"},"Sao10K/L3.3-70B-Euryale-v2.3":{"name":"Llama 3.3 70B Euryale","limit":{"context":20480,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-06"},"Sao10K/L3.1-70B-Hanami-x1":{"name":"Llama 3.1 70B Hanami","limit":{"context":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-07-23"},"aisingapore/Gemma-SEA-LION-v4-27B-IT":{"name":"Gemma SEA-LION v4 27B","limit":{"context":131072,"output":128000},"cost":{"input":0.24,"output":0.48},"updated":"2025-09-23"},"NousResearch/hermes-4-405b":{"name":"Hermes 4 Large","limit":{"context":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15},"updated":"2025-08-26"},"NousResearch/hermes-3-llama-3.1-70b":{"name":"Hermes 3 70B","limit":{"context":65536,"output":8192},"cost":{"input":0.408,"output":0.408,"cache_read":0.204},"updated":"2024-08-18"},"NousResearch/hermes-4-405b:thinking":{"name":"Hermes 4 Large (Thinking)","limit":{"context":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15},"updated":"2025-08-26"},"moonshotai/kimi-k2-instruct":{"name":"Kimi K2 Instruct","limit":{"context":256000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"updated":"2025-07-11"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":65536},"cost":{"input":0.375,"output":2,"cache_read":0.07},"updated":"2026-01"},"moonshotai/kimi-k2.6:thinking":{"name":"Kimi K2.6 Thinking","limit":{"context":262144,"output":65536},"cost":{"input":0.43605,"output":1.836,"cache_read":0.07344},"updated":"2026-04-21"},"moonshotai/kimi-k2-instruct-0711":{"name":"Kimi K2 0711","limit":{"context":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"updated":"2025-07-11"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":65536},"cost":{"input":0.6712,"output":3.35,"cache_read":0.18},"updated":"2026-06-12"},"moonshotai/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code High-Speed","limit":{"context":262144,"output":65536},"cost":{"input":1.9,"output":8,"cache_read":0.32},"updated":"2026-06-12"},"moonshotai/kimi-k2.5:thinking":{"name":"Kimi K2.5 Thinking","limit":{"context":262144,"output":65536},"cost":{"input":0.375,"output":2,"cache_read":0.07},"updated":"2026-01"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":65536},"cost":{"input":0.43605,"output":1.836,"cache_read":0.07344},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":943718},"cost":{"input":1.65,"output":8.25,"cache_read":0.165},"updated":"2026-07-16"},"moonshotai/Kimi-K2-Instruct-0905":{"name":"Kimi K2 0905","limit":{"context":262144,"output":100352},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"updated":"2025-09-25"},"moonshotai/kimi-latest":{"name":"Kimi Latest","limit":{"context":1048576,"output":943718},"cost":{"input":1.65,"output":8.25,"cache_read":0.165},"updated":"2026-05-03"},"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{"name":"DeepSeek R1 Qwen Abliterated","limit":{"context":16384,"output":8192},"cost":{"input":1.4,"output":1.4,"cache_read":0.7},"updated":"2025-01-20"},"huihui-ai/Qwen2.5-32B-Instruct-abliterated":{"name":"Qwen 2.5 32B Abliterated","limit":{"context":32768,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-01-06"},"huihui-ai/Llama-3.3-70B-Instruct-abliterated":{"name":"Llama 3.3 70B Instruct abliterated","limit":{"context":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-08-08"},"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{"name":"DeepSeek R1 Llama 70B Abliterated","limit":{"context":16384,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-01-20"},"TheDrummer/Anubis-70B-v1.1":{"name":"Anubis 70B v1.1","limit":{"context":32000,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155},"updated":"2024-01-01"},"TheDrummer/Cydonia-24B-v4.3":{"name":"The Drummer Cydonia 24B v4.3","limit":{"context":131072,"output":32768},"cost":{"input":0.12,"output":0.15,"cache_read":0.06},"updated":"2025-12-25"},"TheDrummer/Cydonia-24B-v2":{"name":"The Drummer Cydonia 24B v2","limit":{"context":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015},"updated":"2025-02-17"},"TheDrummer/Anubis-70B-v1":{"name":"Anubis 70B v1","limit":{"context":65536,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155},"updated":"2024-01-01"},"TheDrummer/skyfall-36b-v2":{"name":"TheDrummer Skyfall 36B V2","limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25},"updated":"2025-03-10"},"TheDrummer/Rocinante-12B-v1.1":{"name":"Rocinante 12b","limit":{"context":16384,"output":8192},"cost":{"input":0.408,"output":0.595,"cache_read":0.204},"updated":"2024-01-01"},"TheDrummer/Magidonia-24B-v4.3":{"name":"The Drummer Magidonia 24B v4.3","limit":{"context":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015},"updated":"2025-12-25"},"TheDrummer/UnslopNemo-12B-v4.1":{"name":"UnslopNemo 12b v4","limit":{"context":8192,"output":26214},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-01-01"},"TheDrummer/Artemis-v1.1":{"name":"TheDrummer/Artemis v1.1","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-09-06"},"TheDrummer/Cydonia-24B-v4.1":{"name":"The Drummer Cydonia 24B v4.1","limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15},"updated":"2025-09-27"},"TheDrummer/Cydonia-24B-v4":{"name":"The Drummer Cydonia 24B v4","limit":{"context":32768,"output":32768},"cost":{"input":0.2006,"output":0.2414,"cache_read":0.1003},"updated":"2025-07-22"},"TheDrummer/orion-26b-a4b-v1.1":{"name":"Orion 26B A4B v1.1","limit":{"context":65536,"output":8192},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"updated":"2026-10-16"},"abacusai/Dracarys-72B-Instruct":{"name":"Llama 3.1 70B Dracarys 2","limit":{"context":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2025-08-02"},"LLM360/K2-Think":{"name":"K2-Think","limit":{"context":128000,"output":32768},"cost":{"input":0.17,"output":0.68,"cache_read":0.085},"updated":"2025-07-26"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2025-09-29"},"anthropic/claude-opus-4.1":{"name":"Claude 4.1 Opus","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"updated":"2025-08-05"},"anthropic/claude-opus-4.7:thinking":{"name":"Claude 4.7 Opus Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-04-16"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-4.6:thinking":{"name":"Claude 4.6 Opus Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-opus-4.1:thinking:32768":{"name":"Claude 4.1 Opus Thinking (32K)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"updated":"2025-08-05"},"anthropic/claude-sonnet-4.6:thinking":{"name":"Claude Sonnet 4.6 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-fable-latest":{"name":"Claude Fable Latest","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4.6:thinking:max":{"name":"Claude 4.6 Opus Thinking Max","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-opus-4.1:thinking:8192":{"name":"Claude 4.1 Opus Thinking (8K)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"updated":"2025-08-05"},"anthropic/claude-opus-4.5":{"name":"Claude 4.5 Opus","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude 4.7 Opus","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-04-16"},"anthropic/claude-opus-4.1:thinking":{"name":"Claude 4.1 Opus Thinking","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"updated":"2025-08-05"},"anthropic/claude-opus-4.6":{"name":"Claude 4.6 Opus","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-opus-latest":{"name":"Claude Opus Latest","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-03-29"},"anthropic/claude-opus-4.1:thinking:1024":{"name":"Claude 4.1 Opus Thinking (1K)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"updated":"2025-08-05"},"anthropic/claude-sonnet-5:thinking":{"name":"Claude Sonnet 5 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-03-13"},"anthropic/claude-opus-4.6:thinking:low":{"name":"Claude 4.6 Opus Thinking Low","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1},"updated":"2025-10-15"},"anthropic/claude-opus-4.8:thinking":{"name":"Claude Opus 4.8 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-05-28"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-sonnet-4.5:thinking":{"name":"Claude Sonnet 4.5 Thinking","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2025-09-29"},"anthropic/claude-opus-4.5:thinking":{"name":"Claude 4.5 Opus Thinking","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2025-11-24"},"anthropic/claude-haiku-latest":{"name":"Claude Haiku Latest","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-03-29"},"anthropic/claude-haiku-4.5:thinking":{"name":"Claude Haiku 4.5 Thinking","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1},"updated":"2025-10-15"},"anthropic/claude-sonnet-latest":{"name":"Claude Sonnet Latest","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-03-01"},"anthropic/claude-sonnet-5.5:thinking":{"name":"Claude Sonnet 5.5 Thinking","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-opus-4.6:thinking:medium":{"name":"Claude 4.6 Opus Thinking Medium","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-03-13"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-05-28"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo V2.6 Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"updated":"2026-09-22"},"xiaomi/mimo-v2.5:thinking":{"name":"MiMo V2.5 Thinking","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"updated":"2026-04-22"},"xiaomi/mimo-v2.6-flash-abliterated":{"name":"MiMo V2.6 Flash Abliterated","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.275},"updated":"2026-09-25"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo V2.6 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash-uncensored:thinking":{"name":"MiMo V2.6 Flash Uncensored Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.1995},"updated":"2026-09-26"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"updated":"2026-04-22"},"xiaomi/mimo-v2.5-pro:thinking":{"name":"MiMo V2.5 Pro Thinking","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"updated":"2026-04-22"},"xiaomi/mimo-v2.6-flash-uncensored":{"name":"MiMo V2.6 Flash Uncensored","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.1995},"updated":"2026-09-25"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"name":"MiMo V2.6 Pro UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036,"cache_write":0},"updated":"2026-09-21"},"google/gemini-3.1-pro-preview-high":{"name":"Gemini 3.1 Pro (Preview High)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-21"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"updated":"2026-05-07"},"google/gemini-3.5-flash-thinking":{"name":"Gemini 3.5 Flash Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"updated":"2026-05-19"},"google/gemma-4-31b-it:thinking":{"name":"Gemma 4 31B Thinking","limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.34,"cache_read":0.1},"updated":"2026-04-02"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"updated":"2026-08-13"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash (Preview)","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B","limit":{"context":262144,"output":131072},"cost":{"input":0.09,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"google/gemini-3-flash-preview-thinking":{"name":"Gemini 3 Flash Thinking","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google/diffusiongemma":{"name":"DiffusionGemma","limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.025},"updated":"2026-09-19"},"google/gemma-4-26b-a4b-it-cybersecurity":{"name":"Gemma 4 26B A4B Cybersecurity","limit":{"context":262144,"output":32768},"cost":{"input":0.1056,"output":0.3344,"cache_read":0.0528},"updated":"2026-09-19"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro (Preview)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"updated":"2026-07-21"},"google/gemini-3.1-pro-preview-low":{"name":"Gemini 3.1 Pro (Preview Low)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-21"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro (Preview Custom Tools)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4,"cache_read":0.05},"updated":"2026-04-02"},"google/gemma4-31b-splituntied":{"name":"Gemma 4 31B Split-Untied","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2026-09-17"},"google/gemini-flash-lite-latest":{"name":"Gemini Flash Lite Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"updated":"2026-07-21"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"updated":"2026-09-02"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"updated":"2026-05-19"},"google/gemma-4-26b-a4b-it:thinking":{"name":"Gemma 4 26B A4B Thinking","limit":{"context":262144,"output":131072},"cost":{"input":0.09,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":0.1875},"updated":"2026-10-13"},"google/gemini-pro-latest":{"name":"Gemini Pro Latest","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"updated":"2026-03-29"},"perceptron/perceptron-mk1":{"name":"Perceptron Mk1","limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5,"cache_read":0.075},"updated":"2026-05-12"},"perceptron/perceptron-mk1.5":{"name":"Perceptron Mk1.5","limit":{"context":36864,"output":8192},"cost":{"input":0.15,"output":1.5},"updated":"2026-09-25"},"featherless-ai/Qwerky-72B":{"name":"Qwerky 72B","limit":{"context":32000,"output":8192},"cost":{"input":0.5,"output":0.5,"cache_read":0.25},"updated":"2025-03-20"},"THUDM/GLM-4-9B-0414":{"name":"GLM 4 9B 0414","limit":{"context":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1},"updated":"2025-04-14"},"THUDM/GLM-Z1-9B-0414":{"name":"GLM Z1 9B 0414","limit":{"context":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1},"updated":"2025-04-14"},"THUDM/GLM-4-32B-0414":{"name":"GLM 4 32B 0414","limit":{"context":128000,"output":65536},"cost":{"input":0.2,"output":0.2,"cache_read":0.1},"updated":"2025-04-14"},"bytedance/doubao-seed-character":{"name":"Doubao Seed Character","limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.37,"cache_read":0.03,"cache_write":0.003},"updated":"2026-07-18"},"bytedance/doubao-seed-2.1-pro":{"name":"Doubao Seed 2.1 Pro","limit":{"context":256000,"output":128000},"cost":{"input":1,"output":5,"cache_read":0.5},"updated":"2026-06-23"},"bytedance/doubao-seed-2.1-turbo":{"name":"Doubao Seed 2.1 Turbo","limit":{"context":256000,"output":128000},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"updated":"2026-06-23"},"Salesforce/Llama-xLAM-2-70b-fc-r":{"name":"Llama-xLAM-2 70B fc-r","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":2.5,"cache_read":1.25},"updated":"2025-04-13"},"reka/reka-edge-2603":{"name":"Reka Edge 2603","limit":{"context":16384,"output":16384},"cost":{"input":0.105,"output":0.105},"updated":"2026-10-15"},"reka/reka-flash-3":{"name":"Reka Flash 3","limit":{"context":65536,"output":65536},"cost":{"input":0.105,"output":0.21},"updated":"2026-10-15"},"Steelskull/L3.3-Nevoria-R1-70b":{"name":"Steelskull Nevoria R1 70b","limit":{"context":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-06"},"Steelskull/L3.3-MS-Nevoria-70b":{"name":"Steelskull Nevoria 70b","limit":{"context":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-06"},"Steelskull/L3.3-Cu-Mai-R1-70b":{"name":"Llama 3.3 70B Cu Mai","limit":{"context":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-12-06"},"Steelskull/L3.3-Electra-R1-70b":{"name":"Steelskull Electra R1 70b","limit":{"context":32768,"output":16384},"cost":{"input":0.69989,"output":0.69989,"cache_read":0.349945},"updated":"2024-12-06"},"upstage/solar-pro-3":{"name":"Solar Pro 3","limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-03"},"upstage/solar-pro4":{"name":"Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006},"updated":"2026-08-06"},"upstage/solar-mini4":{"name":"Solar Mini 4","limit":{"context":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005},"updated":"2026-09-22"},"upstage/solar-mini4:thinking":{"name":"Solar Mini 4 Thinking","limit":{"context":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005},"updated":"2026-09-22"},"upstage/solar-pro4:thinking":{"name":"Solar Pro 4 Thinking","limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006},"updated":"2026-08-06"},"undi95/remm-slerp-l2-13b":{"name":"ReMM SLERP 13B","limit":{"context":6144,"output":4096},"cost":{"input":0.799,"output":1.207,"cache_read":0.3995},"updated":"2023-07-22"},"ibm-granite/granite-4.2-8b":{"name":"Granite 4.2 8B","limit":{"context":131072,"output":117964},"cost":{"input":0.1,"output":0.15,"cache_read":0.05},"updated":"2026-08-31"},"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{"name":"Llama 3 70B abliterated","limit":{"context":8192,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35},"updated":"2025-07-26"},"z-ai/glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.025},"updated":"2026-08-26"},"z-ai/glm-latest":{"name":"GLM Latest","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-05-03"},"z-ai/GLM-4.6-turbo":{"name":"GLM 4.6 Turbo","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5},"updated":"2025-10-02"},"z-ai/glm-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM 5V Turbo","limit":{"context":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"z-ai/glm-4.6v-original":{"name":"GLM 4.6V Original","limit":{"context":128000,"output":24000},"cost":{"input":0.6,"output":0.9,"cache_read":0.3},"updated":"2025-12-08"},"z-ai/glm-4.7-flash:thinking":{"name":"GLM 4.7 Flash Thinking","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"z-ai/glm-5-original":{"name":"GLM 5 Original","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":1.9,"cache_read":0.1},"updated":"2026-02-11"},"z-ai/glm-4.7-original:thinking":{"name":"GLM 4.7 Original Thinking","limit":{"context":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"z-ai/glm-4.7-original":{"name":"GLM 4.7 Original","limit":{"context":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"z-ai/glm-5.2":{"name":"GLM 5.2","limit":{"context":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM 4.7","limit":{"context":200000,"output":65535},"cost":{"input":0.4004,"output":1.9292,"cache_read":0.08008},"updated":"2025-12-22"},"z-ai/glm-4.6v":{"name":"GLM 4.6V","limit":{"context":128000,"output":24000},"cost":{"input":0.3,"output":0.9,"cache_read":0.15},"updated":"2025-12-08"},"z-ai/glm-4.7:thinking":{"name":"GLM 4.7 Thinking","limit":{"context":200000,"output":65535},"cost":{"input":0.4004,"output":1.9292,"cache_read":0.08008},"updated":"2025-12-22"},"z-ai/glm-5.3-flash-uncensored":{"name":"GLM 5.3 Flash Uncensored","limit":{"context":1048576,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.07},"updated":"2026-08-27"},"z-ai/GLM-4.5-Air":{"name":"GLM 4.5 Air","limit":{"context":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06},"updated":"2025-07-28"},"z-ai/glm-5.1":{"name":"GLM 5.1","limit":{"context":200000,"output":131072},"cost":{"input":0.7,"output":2.5,"cache_read":0.18},"updated":"2026-04-07"},"z-ai/glm-5-original:thinking":{"name":"GLM 5 Original Thinking","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":1.9,"cache_read":0.1},"updated":"2026-02-11"},"z-ai/GLM-4.5-Air:thinking":{"name":"GLM 4.5 Air (Thinking)","limit":{"context":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06},"updated":"2025-07-28"},"z-ai/glm-5-turbo":{"name":"GLM 5 Turbo","limit":{"context":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"z-ai/glm-5.3-flash-apex-abliterated":{"name":"Apex Flash 1 Abliterated","limit":{"context":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075},"updated":"2026-10-05"},"z-ai/glm-5.3-flash-apex":{"name":"Apex Flash 1","limit":{"context":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075},"updated":"2026-10-05"},"z-ai/glm-5v-turbo:thinking":{"name":"GLM 5V Turbo Thinking","limit":{"context":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"z-ai/glm-4.6:thinking":{"name":"GLM 4.6 Thinking","limit":{"context":200000,"output":65535},"cost":{"input":0.5,"output":2,"cache_read":0.1},"updated":"2025-09-30"},"z-ai/glm-5.1:thinking":{"name":"GLM 5.1 Thinking","limit":{"context":200000,"output":131072},"cost":{"input":0.7,"output":2.5,"cache_read":0.18},"updated":"2026-04-07"},"z-ai/glm-5.2:thinking":{"name":"GLM 5.2 Thinking","limit":{"context":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078},"updated":"2026-06-13"},"z-ai/glm-4.6":{"name":"GLM 4.6","limit":{"context":200000,"output":65535},"cost":{"input":0.5,"output":2,"cache_read":0.1},"updated":"2025-09-30"},"z-ai/glm-5.3:thinking":{"name":"GLM 5.3 Thinking","limit":{"context":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"updated":"2026-08-14"},"z-ai/glm-5.3-flash-cybersecurity":{"name":"GLM 5.3 Flash Cybersecurity","limit":{"context":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075},"updated":"2026-09-19"},"z-ai/glm-5.3-uncensored":{"name":"GLM 5.3 Uncensored","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":2.25,"cache_read":0.3},"updated":"2026-09-26"},"z-ai/glm-4.5v":{"name":"GLM 4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3},"updated":"2025-08-11"},"z-ai/glm-5":{"name":"GLM 5","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":1.9,"cache_read":0.1},"updated":"2026-02-12"},"z-ai/glm-4.7-flash":{"name":"GLM 4.7 Flash","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"z-ai/glm-4.5v:thinking":{"name":"GLM 4.5V Thinking","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3},"updated":"2025-08-11"},"z-ai/GLM-4.6-turbo:thinking":{"name":"GLM 4.6 Turbo (Thinking)","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5},"updated":"2025-10-02"},"z-ai/glm-4.6-original":{"name":"GLM 4.6 Original","limit":{"context":256000,"output":65535},"cost":{"input":0.5,"output":2,"cache_read":0.1},"updated":"2025-12-11"},"z-ai/glm-5:thinking":{"name":"GLM 5 Thinking","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":1.9,"cache_read":0.1},"updated":"2026-02-12"},"z-ai/GLM-4.5:thinking":{"name":"GLM 4.5 (Thinking)","limit":{"context":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15},"updated":"2025-07-28"},"z-ai/glm-4.5":{"name":"GLM 4.5","limit":{"context":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15},"updated":"2025-07-28"},"tencent/hy4-preview":{"name":"Tencent Hy4 Preview","limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/hy3":{"name":"Tencent Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.066,"output":0.26,"cache_read":0.029},"updated":"2026-07-06"},"ornith-ai/ornith-1.5-35b-a3b:thinking":{"name":"Ornith 1.5 35B Thinking","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2026-08-20"},"ornith-ai/ornith-1.5-35b-a3b":{"name":"Ornith 1.5 35B","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2026-08-20"},"elorian/glimpse":{"name":"Elorian Glimpse","limit":{"context":262144,"output":256000},"cost":{"input":0.63,"output":3.15,"cache_read":0.063},"updated":"2026-10-17"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.39,"output":2.34,"cache_read":0.3},"updated":"2026-02-15"},"qwen/qwen3.6-max-preview":{"name":"Qwen3.6 Max Preview","limit":{"context":245760,"output":65536},"cost":{"input":1.04,"output":6.24,"cache_read":0.52},"updated":"2026-04-20"},"qwen/qwen3-8b":{"name":"Qwen 3 8B","limit":{"context":41000,"output":32768},"cost":{"input":0.47,"output":0.47,"cache_read":0.235},"updated":"2024-01-01"},"qwen/qwen3.7-max:thinking":{"name":"Qwen3.7 Max Thinking","limit":{"context":1000000,"output":65536},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"updated":"2026-05-21"},"qwen/qwen3.5-27b:thinking":{"name":"Qwen3.5 27B Thinking","limit":{"context":260096,"output":65536},"cost":{"input":0.25,"output":2,"cache_read":0.135},"updated":"2026-02-23"},"qwen/qwen3-235b-a22b-instruct-2507":{"name":"Qwen 3 235b A22B 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.0875,"output":0.35,"cache_read":0.0175},"updated":"2025-07-21"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":991808,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":991808,"output":131072},"cost":{"input":0.14,"output":0.42,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen/qwen3.8-27b-novelist":{"name":"Qwen 3.8 27B Novelist","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.5-omni-flash":{"name":"Qwen3.5 Omni Flash","limit":{"context":49152,"output":16384},"updated":"2026-03-30"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":995904,"output":32768},"cost":{"input":0.3995,"output":1.2002,"cache_read":0.19975},"updated":"2025-09-11"},"qwen/qwen3.8-27b-swift":{"name":"Qwen 3.8 27B Swift","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3-30b-a3b-instruct-2507":{"name":"Qwen3 30B A3B Instruct 2507","limit":{"context":256000,"output":32768},"cost":{"input":0.2,"output":0.5,"cache_read":0.1},"updated":"2025-02-20"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B A10B","limit":{"context":262144,"output":32768},"cost":{"input":0.26,"output":2.08,"cache_read":0.103788},"updated":"2026-02-23"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B (Instruct)","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":1.1,"cache_read":0.07},"updated":"2025-09"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.250251,"output":0.80293,"cache_read":0.079764},"updated":"2026-02-03"},"qwen/qwen3-next-80b-a3b-thinking":{"name":"Qwen3 Next 80B A3B (Thinking)","limit":{"context":256000,"output":32768},"cost":{"input":0.15,"output":0.65,"cache_read":0.075},"updated":"2025-09"},"qwen/qwen3.7-flash:thinking":{"name":"Qwen3.7 Flash Thinking","limit":{"context":983616,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen3-coder":{"name":"Qwen 3 Coder 480B","limit":{"context":262000,"output":65536},"cost":{"input":0.13,"output":0.5,"cache_read":0.065},"updated":"2026-03-17"},"qwen/qwen3-max-2026-01-23":{"name":"Qwen3 Max 2026-01-23","limit":{"context":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001},"updated":"2026-01-26"},"qwen/qwen3.8-27b-darkidol":{"name":"Qwen 3.8 27B DarkIdol","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.8-27b-fable":{"name":"Qwen 3.8 27B Fable","limit":{"context":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125},"updated":"2026-08-28"},"qwen/qwen3-235b-a22b":{"name":"Qwen 3 235b A22B","limit":{"context":262144,"output":16384},"cost":{"input":0.0875,"output":0.35,"cache_read":0.0175},"updated":"2025-04"},"qwen/qwen3.8-27b-kimiko":{"name":"Qwen 3.8 27B Kimiko","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B","limit":{"context":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056},"updated":"2026-04-17"},"qwen/qwen3.8-27b:thinking":{"name":"Qwen3.8 27B Thinking","limit":{"context":1001536,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04},"updated":"2026-08-14"},"qwen/qwen2.5-coder-32b-instruct":{"name":"Qwen 2.5 Coder 32b","limit":{"context":32000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003},"updated":"2024-11-12"},"qwen/qwen3.8-27b-obliterated":{"name":"Qwen 3.8 27B Obliterated","limit":{"context":524288,"output":32768},"cost":{"input":0.25,"output":1.75,"cache_read":0.225},"updated":"2026-08-24"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.9,"cache_read":0.15},"updated":"2025-09-23"},"qwen/qwen3.5-omni-plus":{"name":"Qwen3.5 Omni Plus","limit":{"context":983616,"output":65536},"updated":"2026-03-30"},"qwen/qwen-long":{"name":"Qwen Long 10M","limit":{"context":10000000,"output":8192},"cost":{"input":0.1003,"output":0.408,"cache_read":0.05015},"updated":"2024-08-01"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":260096,"output":65536},"cost":{"input":0.25,"output":2,"cache_read":0.135},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015},"updated":"2026-04-22"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":991808,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"qwen/qwen3-32b":{"name":"Qwen 3 32b","limit":{"context":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2025-04"},"qwen/qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2025-04-28"},"qwen/qwen3.8-27b-synthia":{"name":"Qwen 3.8 27B Synthia","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.8-27b-hemmingway":{"name":"Qwen 3.8 27B Hemingway","limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125},"updated":"2026-09-21"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":991808,"output":65536},"cost":{"input":0.19,"output":1.16,"cache_read":0.02,"cache_write":0.24},"updated":"2026-04-27"},"qwen/qwen3.5-397b-a17b:thinking":{"name":"Qwen3.5 397B A17B Thinking","limit":{"context":262144,"output":65536},"cost":{"input":0.39,"output":2.34,"cache_read":0.3},"updated":"2026-02-15"},"qwen/qwen3-coder-30b-a3b-instruct":{"name":"Qwen3 Coder 30B A3B Instruct","limit":{"context":128000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2025-04"},"qwen/qwen3.8-27b-cybersecurity":{"name":"Qwen 3.8 27B Cybersecurity","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-09-19"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1001536,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04},"updated":"2026-08-14"},"qwen/qwen3.8-27b-obliterated:thinking":{"name":"Qwen 3.8 27B Obliterated Thinking","limit":{"context":524288,"output":32768},"cost":{"input":0.25,"output":1.75,"cache_read":0.225},"updated":"2026-08-24"},"qwen/qwen3.5-flash":{"name":"Qwen3.5 Flash","limit":{"context":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2026-02-23"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen3.5-plus:thinking":{"name":"Qwen3.5 Plus Thinking","limit":{"context":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04},"updated":"2026-02-16"},"qwen/qwen3.8-27b-antislop":{"name":"Qwen 3.8 27B Antislop","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":991808,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.05,"output":0.15,"cache_read":0.025},"updated":"2026-02-23"},"qwen/qwen-turbo":{"name":"Qwen Turbo","limit":{"context":1000000,"output":8192},"cost":{"input":0.04998,"output":0.2006,"cache_read":0.02499},"updated":"2025-04-28"},"qwen/qwen3.8-27b-kiwen":{"name":"Qwen 3.8 27B Kiwen","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen3.8-max-prime":{"name":"Qwen3.8 Max Prime","limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"updated":"2026-09-23"},"qwen/qwen3.7-plus:thinking":{"name":"Qwen3.7 Plus Thinking","limit":{"context":983616,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"qwen/qwen3-vl-235b-a22b-thinking":{"name":"Qwen3 VL 235B A22B Thinking","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":6,"cache_read":0.25},"updated":"2025-09-23"},"qwen/qwen3-max":{"name":"Qwen3 Max","limit":{"context":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001},"updated":"2025-09-23"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":991000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen/qwen3-14b":{"name":"Qwen 3 14b","limit":{"context":41000,"output":32768},"cost":{"input":0.08,"output":0.24,"cache_read":0.04},"updated":"2024-01-01"},"qwen/qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04},"updated":"2026-02-16"},"qwen/qwen-max":{"name":"Qwen 2.5 Max","limit":{"context":32000,"output":8192},"cost":{"input":1.5997,"output":6.392,"cache_read":0.79985},"updated":"2025-01-25"},"qwen/qwen3.5-122b-a10b:thinking":{"name":"Qwen3.5 122B A10B Thinking","limit":{"context":262144,"output":32768},"cost":{"input":0.26,"output":2.08,"cache_read":0.103788},"updated":"2026-02-23"},"qwen/qwen3.6-plus":{"name":"Qwen 3.6 Plus","limit":{"context":991808,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_read":0.0325,"cache_write":0.40625},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b:thinking":{"name":"Qwen3.5 35B A3B Thinking","limit":{"context":260096,"output":65536},"cost":{"input":0.14,"output":1,"cache_read":0.05},"updated":"2026-02-23"},"qwen/qwen3.8-27b-queen":{"name":"Qwen 3.8 27B Queen","limit":{"context":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125},"updated":"2026-09-09"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B A3B","limit":{"context":260096,"output":65536},"cost":{"input":0.14,"output":1,"cache_read":0.05},"updated":"2026-02-23"},"qwen/qwen3.5-flash:thinking":{"name":"Qwen3.5 Flash Thinking","limit":{"context":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2026-02-23"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":128000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.15},"updated":"2025-07-28"},"qwen/qwen3.6-27b:thinking":{"name":"Qwen3.6 27B Thinking","limit":{"context":262144,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015},"updated":"2026-04-22"},"qwen/qwen3.8-27b-uncensored:thinking":{"name":"Qwen 3.8 27B Uncensored Thinking","limit":{"context":1048576,"output":32768},"cost":{"input":1,"output":3,"cache_read":0.22},"updated":"2026-08-25"},"qwen/qwen3.8-27b-uncensored":{"name":"Qwen 3.8 27B Uncensored","limit":{"context":1048576,"output":32768},"cost":{"input":1,"output":3,"cache_read":0.22},"updated":"2026-08-21"},"qwen/qwen3.6-35b-a3b:thinking":{"name":"Qwen3.6 35B A3B Thinking","limit":{"context":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056},"updated":"2026-04-17"},"qwen/qwen3.8-max:thinking":{"name":"Qwen3.8 Max Thinking","limit":{"context":991000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"updated":"2026-05-21"},"qwen/qwen3.8-27b-fimi":{"name":"Qwen 3.8 27B Fimi","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05},"updated":"2026-10-05"},"qwen/qwen-2.5-72b-instruct":{"name":"Qwen2.5 72B","limit":{"context":131072,"output":8192},"cost":{"input":0.36,"output":0.4,"cache_read":0.1785},"updated":"2025-07-03"},"mistralai/ministral-8b-2512":{"name":"Ministral 8B","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.075},"updated":"2025-12-02"},"mistralai/ministral-14b-2512":{"name":"Ministral 14B","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.1},"updated":"2025-12-02"},"mistralai/devstral-small-2505":{"name":"Mistral Devstral Small 2505","limit":{"context":32768,"output":8192},"cost":{"input":0.06,"output":0.06,"cache_read":0.03},"updated":"2025-08-02"},"mistralai/mistral-small-3.1-24b-instruct":{"name":"Mistral Small 3.1 24B (2503)","limit":{"context":128000,"output":102400},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"updated":"2025-03-17"},"mistralai/mistral-saba":{"name":"Mistral Saba","limit":{"context":32768,"output":26214},"cost":{"input":0.1989,"output":0.595,"cache_read":0.09945},"updated":"2025-02-17"},"mistralai/mistral-small-4-119b-2603":{"name":"Mistral Small 4 119B","limit":{"context":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2},"updated":"2026-03-16"},"mistralai/mistral-medium-3.5:thinking":{"name":"Mistral Medium 3.5 Thinking","limit":{"context":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75},"updated":"2026-04-30"},"mistralai/ministral-3b-2512":{"name":"Ministral 3B","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.05},"updated":"2025-12-02"},"mistralai/mistral-nemo-instruct-2407":{"name":"Mistral Nemo","limit":{"context":16384,"output":8192},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015},"updated":"2024-01-01"},"mistralai/mistral-small-24b-instruct-2501":{"name":"Mistral Small 24B","limit":{"context":32768,"output":8192},"cost":{"input":0.1155,"output":0.3465},"updated":"2025-01-30"},"mistralai/codestral-2508":{"name":"Codestral 2508","limit":{"context":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15},"updated":"2025-07-30"},"mistralai/ministral-14b-instruct-2512":{"name":"Ministral 3 14B","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"updated":"2025-12-02"},"mistralai/devstral-2-123b-instruct-2512":{"name":"Devstral 2 123B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":1.4,"cache_read":0.2},"updated":"2025-12-09"},"mistralai/mistral-small-3.2-24b-instruct":{"name":"Mistral Small 3.2 24B (2506)","limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.4,"cache_read":0.1},"updated":"2025-06-20"},"mistralai/mistral-small-4-119b-2603:thinking":{"name":"Mistral Small 4 119B Thinking","limit":{"context":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2},"updated":"2026-03-17"},"mistralai/mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"mistralai/mistral-large":{"name":"Mistral Large 2411","limit":{"context":128000,"output":102400},"cost":{"input":2.006,"output":6.001,"cache_read":0.2},"updated":"2024-02-26"},"mistralai/mixtral-8x22b-instruct-v0.1":{"name":"Mixtral 8x22B","limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2025-12-11"},"mistralai/mistral-medium-3.1":{"name":"Mistral Medium 3.1","limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2},"updated":"2025-08-13"},"mistralai/mistral-medium-3":{"name":"Mistral Medium 3","limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2},"updated":"2025-05-07"},"mistralai/mistral-medium-3.5":{"name":"Mistral Medium 3.5","limit":{"context":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75},"updated":"2026-04-29"},"thinkingmachines/inkling:thinking":{"name":"Inkling Thinking","limit":{"context":1048000,"output":32768},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":1048000,"output":32768},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"thinkingmachines/Inkling-Small":{"name":"Inkling Small","limit":{"context":524288,"output":32768},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"thinkingmachines/Inkling-Small:thinking":{"name":"Inkling Small Thinking","limit":{"context":524288,"output":32768},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"microsoft/wizardlm-2-8x22b":{"name":"WizardLM-2 8x22B","limit":{"context":65536,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"updated":"2024-04-15"},"Gryphe/MythoMax-L2-13b":{"name":"MythoMax 13B","limit":{"context":4096,"output":3686},"cost":{"input":0.1003,"output":0.1003,"cache_read":0.05015},"updated":"2023-08-10"},"baseten/Kimi-K2-Instruct-FP4":{"name":"Kimi K2 0711 Instruct FP4","limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"updated":"2025-07-11"},"deepseek-ai/deepseek-v3.2-exp-thinking":{"name":"DeepSeek V3.2 Exp Thinking","limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14},"updated":"2025-09-29"},"deepseek-ai/DeepSeek-V3.1-Terminus":{"name":"DeepSeek V3.1 Terminus","limit":{"context":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125},"updated":"2025-08-02"},"deepseek-ai/DeepSeek-V3.1:thinking":{"name":"DeepSeek V3.1 Thinking","limit":{"context":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1},"updated":"2025-08-21"},"deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"updated":"2025-05-28"},"deepseek-ai/DeepSeek-V3.1-Terminus:thinking":{"name":"DeepSeek V3.1 Terminus (Thinking)","limit":{"context":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125},"updated":"2025-09-22"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek V3.1","limit":{"context":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1},"updated":"2025-07-26"},"deepseek-ai/deepseek-v3.2-exp":{"name":"DeepSeek V3.2 Exp","limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14},"updated":"2025-09-29"},"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{"name":"Omega Directive 24B Unslop v2.0","limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.25},"updated":"2025-12-08"},"liquid/lfm-2.5-2.6b":{"name":"LFM2.5 2.6B","limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05},"updated":"2026-08-12"},"liquid/lfm-2.5-24b-a2b":{"name":"LFM2.5 24B A2B","limit":{"context":128000,"output":8192},"cost":{"input":0.05,"output":0.7,"cache_read":0.025},"updated":"2026-10-14"}}},"daoxe":{"name":"DaoXE","npm":"@ai-sdk/openai-compatible","models":{"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":5},"updated":"2025-10-15"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"}}},"privatemode-ai":{"name":"Privatemode AI","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.2311,"output":0.7511,"cache_read":0.0578},"updated":"2026-08-26"},"glm-latest":{"name":"GLM (latest)","limit":{"context":1000000,"output":131072},"cost":{"input":1.791,"output":6.6326,"cache_read":0.1733},"updated":"2026-08-14"},"glm-flash-latest":{"name":"GLM Flash (latest)","limit":{"context":1000000,"output":131072},"cost":{"input":0.2311,"output":0.7511,"cache_read":0.0578},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.791,"output":6.6326,"cache_read":0.1733},"updated":"2026-08-14"},"voxtral-mini-3b":{"name":"Voxtral Mini 3B","limit":{"context":32000,"output":32000},"cost":{"input":0.00462,"output":0},"updated":"2025-07"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":256000,"output":262144},"cost":{"input":1.791,"output":8.9436,"cache_read":0.1733},"updated":"2026-04-21"},"deepseek-ocr-2":{"name":"DeepSeek OCR 2","limit":{"context":8192,"output":8192},"cost":{"input":0.8897,"output":1.4675,"cache_read":0.0924},"updated":"2026-01-27"},"qwen3-embedding-4b":{"name":"Qwen3-Embedding 4B","limit":{"context":32000,"output":2560},"cost":{"input":0.1502,"output":0},"updated":"2025-06-06"},"gpt-oss-120b":{"name":"gpt-oss-120b","limit":{"context":128000,"output":32768},"cost":{"input":0.2311,"output":0.7511,"cache_read":0.0462},"updated":"2025-08-05"},"whisper-large-v3":{"name":"Whisper large-v3","limit":{"context":448,"output":4096},"cost":{"input":0.01618,"output":0},"updated":"2024-10-01"},"kimi-latest":{"name":"Kimi (latest)","limit":{"context":256000,"output":262144},"cost":{"input":1.791,"output":8.9436,"cache_read":0.1733},"updated":"2026-04-21"}}},"tensorx":{"name":"TensorX","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.075,"cache_write":0.375},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.1},"updated":"2026-06-01"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.06},"updated":"2026-07-31"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1-0528","limit":{"context":164000,"output":8192},"cost":{"input":0.66,"output":2.6,"cache_read":0.165,"cache_write":0.825},"updated":"2025-05-28"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":1.75,"output":3.5,"cache_read":0.4375,"cache_write":2.185},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.5,"output":1.5,"cache_read":0.13},"updated":"2026-09-10"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":163840},"cost":{"input":0.3,"output":0.5,"cache_read":0.075,"cache_write":0.375},"updated":"2025-12-01"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":64000},"cost":{"input":2,"output":4,"cache_read":0.5},"updated":"2026-08-22"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125,"cache_write":0.625},"updated":"2026-01"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.3125},"updated":"2026-06-12"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":1,"output":4,"cache_read":0.25,"cache_write":1.25},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2026-07-16"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":64000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":64000},"cost":{"input":1.75,"output":4.5,"cache_read":0.44},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5},"updated":"2026-04-01"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.5,"output":4.5,"cache_read":0.375},"updated":"2026-06-13"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":202752},"cost":{"input":1.4,"output":4.4,"cache_read":0.35,"cache_write":1.75},"updated":"2026-04-07"},"z-ai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5},"updated":"2026-03-16"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":202752,"output":202752},"cost":{"input":1,"output":3.2,"cache_read":0.25,"cache_write":1.25},"updated":"2026-02-12"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3.5,"cache_read":0.125,"cache_write":0.625},"updated":"2026-02-23"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":64000},"cost":{"input":2.5,"output":6,"cache_read":0.63},"updated":"2026-08-12"},"qwen/qwen3.8-flash-next":{"name":"Qwen3.8 Flash Next","limit":{"context":262144,"output":64000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2026-08-27"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":2.4,"cache_read":0.1},"updated":"2026-08-14"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.2,"cache_read":0.0375,"cache_write":0.1875},"updated":"2026-02-23"},"qwen/qwen3-235b-a22b-2507":{"name":"Qwen3 235B-A22B-2507","limit":{"context":131000,"output":262144},"cost":{"input":0.072,"output":0.464,"cache_read":0.018,"cache_write":0.09},"updated":"2025-07-21"}}},"vivgrid":{"name":"Vivgrid","npm":"@ai-sdk/openai","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.04},"updated":"2026-08-26"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1.25,"cache_write":12.5},"updated":"2026-06-09"},"gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT 5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"updated":"2026-08-14"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.5,"cache_write":12.5},"updated":"2026-09-01"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gpt-5.6-sol":{"name":"GPT 5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.31,"output":1.23,"cache_read":0.01},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.2,"cache_read":0.3},"updated":"2026-06-13"},"gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"deepseek-v3.2":{"name":"DeepSeek-V3.2","limit":{"context":128000,"output":128000},"cost":{"input":0.28,"output":0.42},"updated":"2025-12-01"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1},"updated":"2026-03-03"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-08-07"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-24"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.3,"cache_read":0.03,"reasoning":0.3},"updated":"2026-07-31"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":128000},"cost":{"input":0.75,"output":3.75,"cache_read":0.15},"updated":"2026-09-02"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.35,"output":3,"cache_read":0.05,"reasoning":3},"updated":"2026-08-22"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gpt-5.6-terra":{"name":"GPT 5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-01-14"},"viv-fast":{"name":"Viv Fast","limit":{"context":1000000,"output":256000},"cost":{"input":0.13,"output":0.4,"cache_read":0.05},"updated":"2026-09-21"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"}}},"alibaba-coding-plan-cn":{"name":"Alibaba Coding Plan (China)","npm":"@ai-sdk/openai-compatible","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-02"},"qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-03"},"qwen3-max-2026-01-23":{"name":"Qwen3 Max","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-23"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-27"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-22"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-16"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-02"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-11"},"qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-07-23"}}},"llmgateway":{"name":"DevPass (LLM Gateway)","npm":"@ai-sdk/openai-compatible","models":{"o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"qwen-plus-latest":{"name":"Qwen Plus Latest","limit":{"context":1000000,"output":8192},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5},"updated":"2025-01-25"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.088,"output":0.25,"cache_read":0.025},"updated":"2026-08-26"},"ministral-8b-2512":{"name":"Ministral 8B","limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.15},"updated":"2025-12-02"},"ministral-14b-2512":{"name":"Ministral 14B","limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.2},"updated":"2025-12-02"},"reka-edge-2603":{"name":"Reka Edge 2603","limit":{"context":16384,"output":16384},"cost":{"input":0.1,"output":0.1},"updated":"2026-10-09"},"muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-06"},"gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"llama-3.1-70b-instruct":{"name":"Llama 3.1 70B Instruct","limit":{"context":128000,"output":2048},"cost":{"input":0.72,"output":0.72},"updated":"2024-07-23"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"qwen3-coder-480b-a35b-instruct":{"name":"Qwen3-Coder 480B-A35B Instruct","limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55},"updated":"2025-04"},"claude-opus-4-1-20250805":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"hy-mt2-plus":{"name":"Hy-MT2 Plus","limit":{"context":8192,"output":8192},"cost":{"input":0.074,"output":0.295},"updated":"2026-05-21"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct (2507)","limit":{"context":262144,"output":8192},"cost":{"input":0.09,"output":0.58},"updated":"2025-07-08"},"gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":983616,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"glm-4.7-flashx":{"name":"GLM-4.7-FlashX","limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"muse-wonder-1.0":{"name":"Muse Wonder","limit":{"context":1048576,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast Non-Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"ling-3.1-flash":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-09-29"},"qwen-plus":{"name":"Qwen Plus","limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5,"reasoning":4},"updated":"2025-09-11"},"seed-2-0-lite-260428":{"name":"Seed 2.0 Lite (260428)","limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2026-04-28"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"updated":"2026-05-07"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.15},"updated":"2026-08-14"},"grok-4-20-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0.108,"output":0.675,"cache_read":0.06},"updated":"2025-10-15"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"grok-4-20-beta-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"seed-1-8-251228":{"name":"Seed 1.8 (251228)","limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-12-18"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-02"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.06},"updated":"2025-11-06"},"kimi-k3-fast":{"name":"Kimi K3","limit":{"context":1040384,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-07-16"},"seed-1-6-flash-250715":{"name":"Seed 1.6 Flash (250715)","limit":{"context":256000,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.015},"updated":"2025-07-26"},"qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1010000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"grok-4-20-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"llama-4-scout-17b-instruct":{"name":"Llama 4 Scout 17B Instruct","limit":{"context":131072,"output":2048},"cost":{"input":0.18,"output":0.59},"updated":"2025-04-05"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"glm-5.3-fast":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"updated":"2026-08-14"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225},"updated":"2026-01"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":4096},"cost":{"input":0.135,"output":0.4},"updated":"2024-12-06"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"mistral-small-2506":{"name":"Mistral Small 3.2","limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-06-20"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1050000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":262000,"output":32768},"cost":{"input":0.08,"output":0.35,"cache_read":0.05},"updated":"2026-09-02"},"ministral-3b-2512":{"name":"Ministral 3B","limit":{"context":131072,"output":8192},"cost":{"input":0.1,"output":0.1},"updated":"2025-12-02"},"hy4-preview":{"name":"Hy4 preview","limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1050000,"output":1050000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1050000,"output":384000},"cost":{"input":0.135,"output":0.54,"cache_read":0.0027},"updated":"2026-09-10"},"gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":0.605,"output":2.123,"cache_read":0.154,"cache_write":0},"updated":"2026-06-13"},"glm-4.5-x":{"name":"GLM-4.5 X","limit":{"context":128000,"output":16384},"cost":{"input":2.2,"output":8.9,"cache_read":0.45},"updated":"2025-07-28"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"fugu-ultra-v2.0":{"name":"Fugu Ultra v2.0","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-09-11"},"qwen-flash":{"name":"Qwen Flash","limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625},"updated":"2025-07-28"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.38,"output":1.98,"cache_read":0.19,"cache_write":0},"updated":"2025-12-22"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"updated":"2026-04-02"},"qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"updated":"2025-09-15"},"auto":{"name":"Auto Route","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2024-01-01"},"grok-build-0-1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"},"mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-16"},"llama-3-70b-instruct":{"name":"Llama 3 70B Instruct","limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74},"updated":"2024-04-18"},"qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"codestral-2508":{"name":"Codestral","limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":0.9},"updated":"2025-07-30"},"minimax-text-01":{"name":"MiniMax Text 01","limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1},"updated":"2025-01-15"},"gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"minimax-m2":{"name":"MiniMax-M2","limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03},"updated":"2025-10-27"},"kimi-k2":{"name":"Kimi K2","limit":{"context":256000,"output":16384},"cost":{"input":0.57,"output":2.3,"cache_read":0.5},"updated":"2025-07-11"},"gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0},"updated":"2023-11-06"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":16384},"cost":{"input":0.26,"output":0.38,"cache_read":0.13},"updated":"2025-09-29"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.737,"output":3.08,"cache_read":0.143},"updated":"2026-06-12"},"qwen3-32b":{"name":"Qwen3 32B","limit":{"context":40960,"output":16384},"cost":{"input":0.36,"output":0.87,"reasoning":8.4},"updated":"2025-04"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":204800,"output":131072},"cost":{"input":0.931,"output":2.93,"cache_read":0.173,"cache_write":0},"updated":"2026-04-07"},"grok-4-5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"gpt-4o-mini-transcribe":{"name":"GPT-4o Mini Transcribe","limit":{"context":16000,"output":16000},"cost":{"input":1.25,"output":5},"updated":"2025-03-20"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"updated":"2026-07-21"},"qwen3-235b-a22b-fp8":{"name":"Qwen3 235B A22B FP8","limit":{"context":40960,"output":8192},"cost":{"input":0.2,"output":0.8},"updated":"2025-04-28"},"glm-4.6v-flashx":{"name":"GLM-4.6V FlashX","limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004},"updated":"2025-12-08"},"gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32766},"cost":{"input":0.04,"output":0.19,"cache_read":0.01},"updated":"2025-08-05"},"qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":983616,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125},"updated":"2026-04-27"},"glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"glm-4.5-airx":{"name":"GLM-4.5 AirX","limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":4.5,"cache_read":0.22},"updated":"2025-07-28"},"seed-1-6-250915":{"name":"Seed 1.6 (250915)","limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-09-15"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262000,"output":65536},"cost":{"input":0.07,"output":0.27},"updated":"2025-04"},"custom":{"name":"Custom Model","limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"updated":"2024-01-01"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-08-13"},"gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"grok-4-3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"mistral-large-4":{"name":"Mistral Large 4","limit":{"context":1000000,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"updated":"2026-10-06"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.12,"output":0.25,"cache_read":0.0025},"updated":"2026-09-22"},"seed-2-0-code-preview-260328":{"name":"Seed 2.0 Code Preview (260328)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-03-28"},"muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.25,"cache_read":0.01},"updated":"2026-04-02"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.05,"cache_read":0.13},"updated":"2026-04-21"},"qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":983616,"output":1000000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375},"updated":"2026-07-27"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-04-22"},"glm-5.2-fast":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":2.156,"output":6.776,"cache_read":0.429},"updated":"2026-06-13"},"qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15},"updated":"2026-02-23"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05},"updated":"2024-09-18"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-07-21"},"muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"updated":"2026-08-10"},"devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.27,"output":1.1},"updated":"2025-12-23"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"minimax-m2.5-highspeed":{"name":"MiniMax-M2.5-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-13"},"llama-3.2-11b-instruct":{"name":"Llama 3.2 11B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.07,"output":0.33},"updated":"2024-09-25"},"minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"qwen3-vl-235b-a22b-thinking":{"name":"Qwen3 VL 235B A22B Thinking","limit":{"context":131072,"output":8192},"cost":{"input":0.98,"output":3.95},"updated":"2025-09-15"},"claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"grok-4":{"name":"Grok 4","limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2025-07-09"},"qwen3-max":{"name":"Qwen3 Max","limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38,"cache_read":0.6,"cache_write":3.75},"updated":"2025-09-23"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1050000,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014},"updated":"2026-04-24"},"seed-1-6-250615":{"name":"Seed 1.6 (250615)","limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-06-25"},"qwen3.8-max":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":1000000},"cost":{"input":1.54,"output":4.631,"cache_read":0.198,"cache_write":2.5},"updated":"2026-07-19"},"inkling":{"name":"Inkling","limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034},"updated":"2026-04-22"},"o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"nemotron-3-ultra-550b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":1048576,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"updated":"2026-06-04"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"qwen-max":{"name":"Qwen Max","limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4},"updated":"2025-01-25"},"granite-4.2-8b":{"name":"Granite 4.2 8B","limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.25,"cache_read":0.015},"updated":"2026-09-01"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":983616,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL","limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-09-10"},"grok-4-6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"gpt-4":{"name":"GPT-4","limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"glm-4-32b-0414-128k":{"name":"GLM-4 32B (0414-128k)","limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.1},"updated":"2025-04-14"},"mistral-medium-3-5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"updated":"2026-05-01"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":1048576},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-09-02"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32766},"cost":{"input":0.032,"output":0.14,"cache_read":0.032},"updated":"2025-08-05"},"gpt-4o-transcribe":{"name":"GPT-4o Transcribe","limit":{"context":16000,"output":16000},"cost":{"input":2.5,"output":10},"updated":"2025-03-20"},"gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"hy3":{"name":"Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131000,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025,"cache_write":0},"updated":"2025-07-28"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":997952,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"updated":"2025-07-28"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":1050000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-03"},"glm-4.5v":{"name":"GLM-4.5V","limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"seed-2-0-mini-260428":{"name":"Seed 2.0 Mini (260428)","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"updated":"2026-04-28"},"llama-4-maverick-17b-instruct":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":1048576,"output":2048},"cost":{"input":0.27,"output":0.85},"updated":"2025-04-05"},"ling-3.0-flash":{"name":"InclusionAI Ling 3.0 Flash","limit":{"context":262144,"output":262144},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-08-02"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"glm-5":{"name":"GLM-5","limit":{"context":203000,"output":131072},"cost":{"input":0.72,"output":2.3,"cache_read":0.144,"cache_write":0},"updated":"2026-02-12"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"minimax-m3.1-flash":{"name":"MiniMax-M3.1-Flash","limit":{"context":1048576,"output":512000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-19"},"qwen35-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":228700,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"updated":"2026-02-12"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.05},"updated":"2026-06-01"},"qwen3-235b-a22b-thinking-2507":{"name":"Qwen3 235B A22B Thinking (2507)","limit":{"context":262000,"output":8192},"cost":{"input":0.3,"output":3},"updated":"2025-07-08"},"sonar":{"name":"Sonar","limit":{"context":130000,"output":4096},"cost":{"input":0.25,"output":2.5,"cache_write":0.25},"updated":"2025-09-01"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":1048576},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375},"updated":"2026-09-30"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":3.125},"updated":"2026-05-21"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.08,"output":0.32,"cache_read":0.017,"cache_write":0.375},"updated":"2026-03-18"},"minimax-m2.1-lightning":{"name":"MiniMax M2.1 Lightning","limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48},"updated":"2025-12-23"},"fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-22"},"qwen3-vl-plus":{"name":"Qwen3-VL Plus","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"cache_read":0.04,"cache_write":0.25,"reasoning":4.8},"updated":"2025-09-23"},"mistral-large-latest":{"name":"Mistral Large (latest)","limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12},"updated":"2025-12-02"},"seed-2-0-pro-260328":{"name":"Seed 2.0 Pro (260328)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-03-28"},"grok-4-1-fast-reasoning":{"name":"Grok 4.1 Fast Reasoning","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"grok-4-7":{"name":"Grok 4.7","limit":{"context":524288,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"grok-4-20-beta-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"gemini-pro-latest":{"name":"Gemini Pro Latest","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-27"},"glm-4.5":{"name":"GLM-4.5","limit":{"context":131000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"},"ernie-4.5-vl-424b-a47b":{"name":"ERNIE 4.5 VL 424B A47B","limit":{"context":123000,"output":123000},"cost":{"input":0.42,"output":1.25},"updated":"2025-06-30"}}},"model-oracle-ai":{"name":"Model Oracle AI","npm":"@ai-sdk/openai-compatible","models":{"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"updated":"2026-06-09"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"updated":"2025-08-07"},"gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"updated":"2026-03-17"},"o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"updated":"2025-04-16"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"updated":"2026-04-23"},"gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"updated":"2025-04-14"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"updated":"2026-04-24"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"updated":"2026-06-13"},"auto":{"name":"Auto","limit":{"context":1000000,"output":128000},"updated":"2026-07-07"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"updated":"2026-03-05"},"claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"updated":"2025-10-15"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"updated":"2026-06-30"},"gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"updated":"2026-03-17"},"gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"updated":"2025-04-14"},"claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"updated":"2026-05-28"}}},"llmgateway-providers":{"name":"LLM Gateway","npm":"@ai-sdk/openai-compatible","models":{"consensusprotocol/glm-5.3-flash":{"name":"GLM-5.3 Flash (Consensus Protocol)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.25,"cache_read":0.01},"updated":"2026-08-26"},"consensusprotocol/Qwen3.8-27B":{"name":"Qwen3.8 27B (Consensus Protocol)","limit":{"context":262000,"output":32768},"cost":{"input":0.08,"output":0.35,"cache_read":0.05},"updated":"2026-09-02"},"consensusprotocol/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Consensus Protocol)","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.55,"cache_read":0.005},"updated":"2026-09-10"},"consensusprotocol/gpt-oss-20b":{"name":"GPT OSS 20B (Consensus Protocol)","limit":{"context":128000,"output":32768},"cost":{"input":0.04,"output":0.19,"cache_read":0.01},"updated":"2025-08-05"},"consensusprotocol/mimo-v2.6-flash":{"name":"MiMo V2.6 Flash (Consensus Protocol)","limit":{"context":1048576,"output":131072},"cost":{"input":0.12,"output":0.25,"cache_read":0.0025},"updated":"2026-09-22"},"consensusprotocol/gemma-4-31b-it":{"name":"Gemma 4 31B IT (Consensus Protocol)","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.25,"cache_read":0.01},"updated":"2026-04-02"},"consensusprotocol/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Consensus Protocol)","limit":{"context":1000000,"output":384000},"cost":{"input":0.1,"output":0.2,"cache_read":0.005},"updated":"2026-04-24"},"consensusprotocol/minimax-m3":{"name":"MiniMax M3 (Consensus Protocol)","limit":{"context":1048576,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.05},"updated":"2026-06-01"},"fireworks/glm-5.3-flash":{"name":"GLM-5.3 Flash (Fireworks AI)","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"fireworks/glm-5.3":{"name":"GLM-5.3 (Fireworks AI)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"fireworks/kimi-k3-fast":{"name":"Kimi K3 Fast (Fireworks AI)","limit":{"context":1040384,"output":1040384},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"updated":"2026-07-16"},"fireworks/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Fireworks AI)","limit":{"context":1048576,"output":393216},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"updated":"2026-09-10"},"fireworks/kimi-k3":{"name":"Kimi K3 (Fireworks AI)","limit":{"context":1040384,"output":1040384},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"sakana/fugu-ultra-v2.0":{"name":"Fugu Ultra v2.0 (Sakana AI)","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-09-11"},"sakana/fugu-ultra":{"name":"Fugu Ultra (Sakana AI)","limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max (Sakana AI)","limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"minimax/minimax-text-01":{"name":"MiniMax Text 01 (MiniMax)","limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1},"updated":"2025-01-15"},"minimax/minimax-m2":{"name":"MiniMax M2 (MiniMax)","limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax M2.1 (MiniMax)","limit":{"context":196608,"output":131072},"cost":{"input":0.27,"output":1.1},"updated":"2025-12-23"},"minimax/minimax-m2.5-highspeed":{"name":"MiniMax M2.5 Highspeed (MiniMax)","limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.03},"updated":"2026-02-13"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax M2.7 Highspeed (MiniMax)","limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06},"updated":"2026-03-18"},"minimax/minimax-m3.1-flash":{"name":"MiniMax M3.1 Flash (MiniMax)","limit":{"context":1048576,"output":524288},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-19"},"minimax/minimax-m2.5":{"name":"MiniMax M2.5 (MiniMax)","limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax M3 (MiniMax)","limit":{"context":512000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax M2.7 (MiniMax)","limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"minimax/minimax-m2.1-lightning":{"name":"MiniMax M2.1 Lightning (MiniMax)","limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48},"updated":"2025-12-23"},"xai/grok-4-20-beta-0309-reasoning":{"name":"Grok 4.20 Beta Reasoning (0309) (xAI)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-build-0-1":{"name":"Grok Build 0.1 (xAI)","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-05-20"},"xai/grok-4-5":{"name":"Grok 4.5 (xAI)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"xai/grok-4-3":{"name":"Grok 4.3 (xAI)","limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-30"},"xai/grok-4":{"name":"Grok 4 (xAI)","limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75},"updated":"2025-07-09"},"xai/grok-4-6":{"name":"Grok 4.6 (xAI)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4-7":{"name":"Grok 4.7 (xAI)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"xai/grok-4-20-beta-0309-non-reasoning":{"name":"Grok 4.20 Beta Non-Reasoning (0309) (xAI)","limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2026-03-09"},"meta-contributor/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor (Meta Contributor)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-06"},"meta-contributor/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor (Meta Contributor)","limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"azure/gpt-4o":{"name":"GPT-4o (Azure)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"azure/gpt-6.1-sol":{"name":"GPT-6.1 Sol (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"azure/gpt-5":{"name":"GPT-5 (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"azure/gpt-5.4-mini":{"name":"GPT-5.4 Mini (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"azure/gpt-5.6-luna":{"name":"GPT-5.6 Luna (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"azure/gpt-5.5":{"name":"GPT-5.5 (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"azure/gpt-4.1-mini":{"name":"GPT-4.1 Mini (Azure)","limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"azure/gpt-5.6-sol":{"name":"GPT-5.6 Sol (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"azure/gpt-5-nano":{"name":"GPT-5 Nano (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"azure/gpt-5.4":{"name":"GPT-5.4 (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"azure/gpt-5.2":{"name":"GPT-5.2 (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"azure/gpt-5-mini":{"name":"GPT-5 Mini (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"azure/gpt-5.3-codex":{"name":"GPT-5.3 Codex (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"azure/gpt-6-luna":{"name":"GPT-6 Luna (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"azure/gpt-oss-120b":{"name":"GPT OSS 120B (Azure)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"azure/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"azure/gpt-5.1":{"name":"GPT-5.1 (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"azure/gpt-6-astra":{"name":"GPT-6 Astra (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"azure/gpt-5.1-codex":{"name":"GPT-5.1 Codex (Azure)","limit":{"context":400000,"output":272000},"cost":{"input":1.25,"output":10},"updated":"2025-11-13"},"azure/gpt-5.4-nano":{"name":"GPT-5.4 Nano (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"azure/gpt-5.6-terra":{"name":"GPT-5.6 Terra (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"azure/gpt-6-sol":{"name":"GPT-6 Sol (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"azure/gpt-4.1":{"name":"GPT-4.1 (Azure)","limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"azure/gpt-5.4-pro":{"name":"GPT-5.4 Pro (Azure)","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"azure/gpt-5.2-codex":{"name":"GPT-5.2 Codex (Azure)","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/o1":{"name":"o1 (OpenAI)","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o (OpenAI)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5 (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo (OpenAI)","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 Mini (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4 Mini (OpenAI)","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5 (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 Mini (OpenAI)","limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 Nano (OpenAI)","limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro (OpenAI)","limit":{"context":400000,"output":272000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro (OpenAI)","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5 Turbo (OpenAI)","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-5.4":{"name":"GPT-5.4 (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-4o-mini-transcribe":{"name":"GPT-4o Mini Transcribe (OpenAI)","limit":{"context":16000,"output":2000},"cost":{"input":1.25,"output":5},"updated":"2025-03-20"},"openai/gpt-5.2":{"name":"GPT-5.2 (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o Mini (OpenAI)","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5-mini":{"name":"GPT-5 Mini (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-6-luna":{"name":"GPT-6 Luna (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3 Mini (OpenAI)","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-4":{"name":"GPT-4 (OpenAI)","limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/gpt-4o-transcribe":{"name":"GPT-4o Transcribe (OpenAI)","limit":{"context":16000,"output":2000},"cost":{"input":2.5,"output":10},"updated":"2025-03-20"},"openai/gpt-5.1":{"name":"GPT-5.1 (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-03"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 Nano (OpenAI)","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1 (OpenAI)","limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro (OpenAI)","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/o3":{"name":"o3 (OpenAI)","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2 (Meta)","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-wonder-1.0":{"name":"Muse Wonder 1.0 (Meta)","limit":{"context":1048576,"output":1048576},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3 (Meta)","limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1 (Meta)","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"scx-ai-gp/glm-5.3-flash":{"name":"GLM-5.3 Flash (SCX.ai)","limit":{"context":1048576,"output":131072},"cost":{"input":0.088,"output":0.25,"cache_read":0.025},"updated":"2026-08-26"},"scx-ai-gp/glm-5.3":{"name":"GLM-5.3 (SCX.ai)","limit":{"context":1000000,"output":128000},"cost":{"input":0.924,"output":2.904,"cache_read":0.1716},"updated":"2026-08-14"},"scx-ai-gp/glm-5.3-fast":{"name":"GLM 5.3 Fast (SCX.ai)","limit":{"context":1000000,"output":128000},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"updated":"2026-08-14"},"scx-ai-gp/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (SCX.ai)","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.01},"updated":"2026-09-10"},"scx-ai-gp/glm-5.2":{"name":"GLM-5.2 (SCX.ai)","limit":{"context":1000000,"output":131072},"cost":{"input":0.605,"output":2.123,"cache_read":0.154},"updated":"2026-06-13"},"scx-ai-gp/kimi-k2.7-code":{"name":"Kimi K2.7 Code (SCX.ai)","limit":{"context":262144,"output":262144},"cost":{"input":0.737,"output":3.08,"cache_read":0.143},"updated":"2026-06-12"},"scx-ai-gp/glm-5.2-fast":{"name":"GLM-5.2 Turbo (SCX.ai)","limit":{"context":1000000,"output":131072},"cost":{"input":2.156,"output":6.776,"cache_read":0.429},"updated":"2026-06-13"},"scx-ai-gp/qwen3.8-max":{"name":"Qwen3.8 Max (SCX.ai)","limit":{"context":1000000,"output":131072},"cost":{"input":1.54,"output":4.631,"cache_read":0.198,"cache_write":2.5},"updated":"2026-08-03"},"scx-ai-gp/kimi-k3":{"name":"Kimi K3 (SCX.ai)","limit":{"context":1048576,"output":1048576},"cost":{"input":3.135,"output":15.675,"cache_read":0.319},"updated":"2026-07-16"},"sciforium/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (sciforium)","limit":{"context":1048576,"output":384000},"cost":{"input":0.246,"output":0.944,"cache_read":0.012},"updated":"2026-09-10"},"aws-bedrock/llama-3.1-70b-instruct":{"name":"Llama 3.1 70B Instruct (AWS Bedrock)","limit":{"context":128000,"output":2048},"cost":{"input":0.72,"output":0.72},"updated":"2024-07-23"},"aws-bedrock/claude-fable-5":{"name":"Claude Fable 5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"aws-bedrock/claude-opus-4-1-20250805":{"name":"Claude Opus 4.1 (AWS Bedrock)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"aws-bedrock/claude-opus-4-7":{"name":"Claude Opus 4.7 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"aws-bedrock/claude-opus-4-8":{"name":"Claude Opus 4.8 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"aws-bedrock/claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5 (2025-09-29) (AWS Bedrock)","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"aws-bedrock/claude-fable-5-1":{"name":"Claude Fable 5.1 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"aws-bedrock/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (AWS Bedrock)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"aws-bedrock/claude-opus-5":{"name":"Claude Opus 5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"aws-bedrock/llama-4-scout-17b-instruct":{"name":"Llama 4 Scout 17B Instruct (AWS Bedrock)","limit":{"context":8192,"output":2048},"cost":{"input":0.17,"output":0.66},"updated":"2025-04-05"},"aws-bedrock/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (AWS Bedrock)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"aws-bedrock/grok-4-3":{"name":"Grok 4.3 (AWS Bedrock)","limit":{"context":1000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-30"},"aws-bedrock/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"aws-bedrock/claude-opus-4-6":{"name":"Claude Opus 4.6 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"aws-bedrock/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (AWS Bedrock)","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"aws-bedrock/claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5 (2025-10-01) (AWS Bedrock)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"aws-bedrock/claude-sonnet-5":{"name":"Claude Sonnet 5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"aws-bedrock/kimi-k3":{"name":"Kimi K3 (AWS Bedrock)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-07-16"},"aws-bedrock/grok-4-6":{"name":"Grok 4.6 (AWS Bedrock)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"aws-bedrock/claude-haiku-5-5":{"name":"Claude Haiku 5.5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"aws-bedrock/llama-4-maverick-17b-instruct":{"name":"Llama 4 Maverick 17B Instruct (AWS Bedrock)","limit":{"context":8192,"output":2048},"cost":{"input":0.24,"output":0.97},"updated":"2025-04-05"},"aws-bedrock/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5 (AWS Bedrock)","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"aws-bedrock/claude-opus-5-5":{"name":"Claude Opus 5.5 (AWS Bedrock)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"aws-bedrock/grok-4-7":{"name":"Grok 4.7 (AWS Bedrock)","limit":{"context":524288,"output":524288},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"canopywave/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (CanopyWave)","limit":{"context":1000000,"output":393216},"cost":{"input":1.74,"output":3.48,"cache_read":0.01},"updated":"2026-04-24"},"canopywave/glm-5.2":{"name":"GLM-5.2 (CanopyWave)","limit":{"context":200000,"output":32768},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"canopywave/kimi-k2.6":{"name":"Kimi K2.6 (CanopyWave)","limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"canopywave/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (CanopyWave)","limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"updated":"2026-04-24"},"canopywave/kimi-k3":{"name":"Kimi K3 (CanopyWave)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"quartz/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro (Preview) (Quartz)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"baidu/glm-5.3":{"name":"GLM-5.3 (Baidu)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"baidu/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Baidu)","limit":{"context":1048576,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.042},"updated":"2026-04-24"},"baidu/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Baidu)","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"baidu/glm-5.2":{"name":"GLM-5.2 (Baidu)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"baidu/glm-5.1":{"name":"GLM-5.1 (Baidu)","limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"baidu/kimi-k2.6":{"name":"Kimi K2.6 (Baidu)","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"baidu/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Baidu)","limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (DeepSeek)","limit":{"context":1050000,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (DeepSeek)","limit":{"context":1050000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (DeepSeek)","limit":{"context":1050000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"inference.net/glm-5.3-flash":{"name":"GLM-5.3 Flash (Inference.net)","limit":{"context":1048576,"output":128000},"cost":{"input":0.09,"output":0.28,"cache_read":0.02},"updated":"2026-08-26"},"inference.net/glm-5.3":{"name":"GLM-5.3 (Inference.net)","limit":{"context":1048576,"output":131072},"cost":{"input":0.9,"output":3,"cache_read":0.15},"updated":"2026-08-14"},"inference.net/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Inference.net)","limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":1,"cache_read":0.007},"updated":"2026-10-17"},"inference.net/llama-3.2-11b-instruct":{"name":"Llama 3.2 11B Instruct (Inference.net)","limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.33},"updated":"2024-09-25"},"gonka24/minimax-m2.7":{"name":"MiniMax M2.7 (Gonka24)","limit":{"context":204800,"output":131100},"cost":{"input":0.08,"output":0.32,"cache_read":0.017},"updated":"2026-03-18"},"runpod/kimi-k3":{"name":"Kimi K3 (Runpod)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"scx-ai/qwen3-32b":{"name":"Qwen3 32B (SCX.ai (Turbo))","limit":{"context":32768,"output":8192},"cost":{"input":0.36,"output":0.87},"updated":"2025-04"},"scx-ai/gpt-oss-120b":{"name":"GPT OSS 120B (SCX.ai (Turbo))","limit":{"context":131072,"output":32768},"cost":{"input":0.17,"output":0.55},"updated":"2025-08-05"},"scx-ai/minimax-m2.7":{"name":"MiniMax M2.7 (SCX.ai (Turbo))","limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05},"updated":"2026-03-18"},"aws-mantle/gpt-5.6-luna":{"name":"GPT-5.6 Luna (AWS Mantle)","limit":{"context":921600,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"updated":"2026-07-09"},"aws-mantle/gpt-5.6-sol":{"name":"GPT-5.6 Sol (AWS Mantle)","limit":{"context":921600,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5},"updated":"2026-07-09"},"aws-mantle/gpt-6-astra":{"name":"GPT-6 Astra (AWS Mantle)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"aws-mantle/gpt-5.6-terra":{"name":"GPT-5.6 Terra (AWS Mantle)","limit":{"context":921600,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"updated":"2026-07-09"},"novita/glm-5.3-flash":{"name":"GLM-5.3 Flash (NovitaAI)","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"novita/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct (NovitaAI)","limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55},"updated":"2025-04"},"novita/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507 (NovitaAI)","limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.58},"updated":"2025-07-21"},"novita/qwen3.8-flash":{"name":"Qwen3.8 Flash (NovitaAI)","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"novita/ling-3.1-flash":{"name":"Ling 3.1 Flash (NovitaAI)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-09-29"},"novita/glm-5.3":{"name":"GLM-5.3 (NovitaAI)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"novita/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B A10B (NovitaAI)","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"novita/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct (NovitaAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5},"updated":"2025-09"},"novita/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct (NovitaAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7},"updated":"2025-10-05"},"novita/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B (NovitaAI)","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"novita/llama-4-scout-17b-instruct":{"name":"Llama 4 Scout 17B Instruct (NovitaAI)","limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59},"updated":"2025-04-05"},"novita/llama-3.3-70b-instruct":{"name":"Llama 3.3 70B Instruct (NovitaAI)","limit":{"context":131072,"output":120000},"cost":{"input":0.135,"output":0.4},"updated":"2024-12-06"},"novita/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B (NovitaAI)","limit":{"context":262144,"output":64000},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"novita/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (NovitaAI)","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"novita/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (NovitaAI)","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"novita/glm-5.2":{"name":"GLM-5.2 (NovitaAI)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"novita/glm-4.7":{"name":"GLM-4.7 (NovitaAI)","limit":{"context":204800,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"novita/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT (NovitaAI)","limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"novita/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct (NovitaAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5},"updated":"2025-09-23"},"novita/glm-4.6v":{"name":"GLM-4.6V (NovitaAI)","limit":{"context":131072,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"updated":"2025-12-08"},"novita/llama-3-70b-instruct":{"name":"Llama 3 70B Instruct (NovitaAI)","limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74},"updated":"2024-04-18"},"novita/kimi-k2":{"name":"Kimi K2 (NovitaAI)","limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3},"updated":"2025-07-11"},"novita/deepseek-v3.2":{"name":"DeepSeek V3.2 (NovitaAI)","limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345},"updated":"2025-12-01"},"novita/kimi-k2.7-code":{"name":"Kimi K2.7 Code (NovitaAI)","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"novita/glm-5.1":{"name":"GLM-5.1 (NovitaAI)","limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"novita/qwen3-235b-a22b-fp8":{"name":"Qwen3 235B A22B FP8 (NovitaAI)","limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8},"updated":"2025-04-28"},"novita/qwen3-coder-30b-a3b-instruct":{"name":"Qwen3 Coder 30B A3B Instruct (NovitaAI)","limit":{"context":160000,"output":32768},"cost":{"input":0.07,"output":0.27},"updated":"2025-04"},"novita/qwen3.8-27b":{"name":"Qwen3.8 27B (NovitaAI)","limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085},"updated":"2026-08-14"},"novita/gemma-4-31b-it":{"name":"Gemma 4 31B IT (NovitaAI)","limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"novita/kimi-k2.6":{"name":"Kimi K2.6 (NovitaAI)","limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16},"updated":"2026-04-21"},"novita/step-3.7-flash":{"name":"Step 3.7 Flash (NovitaAI)","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"novita/mimo-v2.5-pro":{"name":"MiMo V2.5 Pro (NovitaAI)","limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043},"updated":"2026-04-22"},"novita/llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct (NovitaAI)","limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05},"updated":"2024-09-18"},"novita/minimax-m2.1":{"name":"MiniMax M2.1 (NovitaAI)","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2025-12-23"},"novita/glm-4.6":{"name":"GLM-4.6 (NovitaAI)","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"novita/qwen3-vl-235b-a22b-thinking":{"name":"Qwen3 VL 235B A22B Thinking (NovitaAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"updated":"2025-09-23"},"novita/qwen3-max":{"name":"Qwen3 Max (NovitaAI)","limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38},"updated":"2025-09-23"},"novita/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (NovitaAI)","limit":{"context":1050000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"novita/qwen3.8-max":{"name":"Qwen3.8 Max (NovitaAI)","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-03"},"novita/mimo-v2.5":{"name":"MiMo V2.5 (NovitaAI)","limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034},"updated":"2026-04-22"},"novita/kimi-k3":{"name":"Kimi K3 (NovitaAI)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"novita/hy3":{"name":"Hy3 (NovitaAI)","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"novita/glm-4.5v":{"name":"GLM-4.5V (NovitaAI)","limit":{"context":65536,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"novita/llama-4-maverick-17b-instruct":{"name":"Llama 4 Maverick 17B Instruct (NovitaAI)","limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85},"updated":"2025-04-05"},"novita/ling-3.0-flash":{"name":"InclusionAI Ling 3.0 Flash (NovitaAI)","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-08-02"},"novita/glm-5":{"name":"GLM-5 (NovitaAI)","limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"novita/qwen35-397b-a17b":{"name":"Qwen3.5 397B A17B (NovitaAI)","limit":{"context":262144,"output":64000},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-16"},"novita/minimax-m2.5":{"name":"MiniMax M2.5 (NovitaAI)","limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"novita/qwen3-235b-a22b-thinking-2507":{"name":"Qwen3 235B A22B Thinking 2507 (NovitaAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":3},"updated":"2025-07-25"},"novita/qwen3.7-max":{"name":"Qwen3.7 Max (NovitaAI)","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"updated":"2026-05-21"},"novita/minimax-m2.7":{"name":"MiniMax M2.7 (NovitaAI)","limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"novita/ernie-4.5-vl-424b-a47b":{"name":"ERNIE 4.5 VL 424B A47B (NovitaAI)","limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25},"updated":"2025-06-30"},"mistral/ministral-8b-2512":{"name":"Ministral 8B (Mistral AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.15},"updated":"2025-12-02"},"mistral/ministral-14b-2512":{"name":"Ministral 14B (Mistral AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.2},"updated":"2025-12-02"},"mistral/glm-5.3":{"name":"GLM-5.3 (Mistral AI)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-08-14"},"mistral/mistral-small-2506":{"name":"Mistral Small 3.2 (Mistral AI)","limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-06-20"},"mistral/ministral-3b-2512":{"name":"Ministral 3B (Mistral AI)","limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1},"updated":"2025-12-02"},"mistral/mistral-small-2603":{"name":"Mistral Small 4 (Mistral AI)","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6},"updated":"2026-03-16"},"mistral/codestral-2508":{"name":"Codestral (Mistral AI)","limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9},"updated":"2025-07-30"},"mistral/mistral-large-2512":{"name":"Mistral Large 3 (Mistral AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"updated":"2025-12-02"},"mistral/mistral-large-4":{"name":"Mistral Large 4 (Mistral AI)","limit":{"context":1000000,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"updated":"2026-10-06"},"mistral/devstral-2512":{"name":"Devstral 2 (Mistral AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-09"},"mistral/mistral-medium-3-5":{"name":"Mistral Medium 3.5 (Mistral AI)","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"updated":"2026-05-01"},"mistral/mistral-large-latest":{"name":"Mistral Large Latest (Mistral AI)","limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12},"updated":"2025-12-02"},"deepinfra/mimo-v2.6-pro":{"name":"MiMo V2.6 Pro (DeepInfra)","limit":{"context":1048576,"output":65536},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"deepinfra/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-05"},"deepinfra/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (DeepInfra)","limit":{"context":1048576,"output":64000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"updated":"2026-04-24"},"deepinfra/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (DeepInfra)","limit":{"context":1048576,"output":393216},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-10-17"},"deepinfra/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (DeepInfra)","limit":{"context":1048576,"output":393216},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-09-10"},"deepinfra/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"updated":"2026-04-02"},"deepinfra/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"updated":"2025-09-23"},"deepinfra/deepseek-v3.2":{"name":"DeepSeek V3.2 (DeepInfra)","limit":{"context":160000,"output":65536},"cost":{"input":0.26,"output":0.38,"cache_read":0.13},"updated":"2025-12-01"},"deepinfra/mimo-v2.6-flash":{"name":"MiMo V2.6 Flash (DeepInfra)","limit":{"context":1048576,"output":65536},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"deepinfra/gemma-4-31b-it":{"name":"Gemma 4 31B IT (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.4},"updated":"2026-04-02"},"deepinfra/qwen3.5-9b":{"name":"Qwen3.5 9B (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.15},"updated":"2026-02-23"},"deepinfra/muse-glimmer-30b":{"name":"Muse Glimmer 30B (DeepInfra)","limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"updated":"2026-08-10"},"deepinfra/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (DeepInfra)","limit":{"context":1000000,"output":393216},"cost":{"input":0.08,"output":0.18,"cache_read":0.016},"updated":"2026-04-24"},"deepinfra/inkling":{"name":"Inkling (DeepInfra)","limit":{"context":524288,"output":262144},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"deepinfra/nemotron-3-ultra-550b":{"name":"Nemotron 3 Ultra 550B (DeepInfra)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"updated":"2026-06-01"},"deepinfra/granite-4.2-8b":{"name":"Granite 4.2 8B (DeepInfra)","limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015},"updated":"2026-09-01"},"deepinfra/ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL (DeepInfra)","limit":{"context":131072,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-09-10"},"deepinfra/ling-3.0-flash":{"name":"InclusionAI Ling 3.0 Flash (DeepInfra)","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-08-02"},"luminal/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (luminal)","limit":{"context":1000000,"output":384000},"cost":{"input":0.135,"output":0.54,"cache_read":0.0027},"updated":"2026-09-10"},"perplexity/sonar":{"name":"Sonar (Perplexity)","limit":{"context":130000,"output":4096},"cost":{"input":0.25,"output":2.5,"cache_write":0.25},"updated":"2025-09-01"},"groq/gpt-oss-20b":{"name":"GPT OSS 20B (Groq)","limit":{"context":131072,"output":32766},"cost":{"input":0.1,"output":0.5},"updated":"2025-08-05"},"groq/gpt-oss-120b":{"name":"GPT OSS 120B (Groq)","limit":{"context":131072,"output":32766},"cost":{"input":0.15,"output":0.75},"updated":"2025-08-05"},"ranoai/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (RanoAI)","limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"cerebras/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507 (Cerebras)","limit":{"context":262000,"output":8192},"cost":{"input":0.6,"output":1.2},"updated":"2025-07-21"},"cerebras/llama-3.3-70b-instruct":{"name":"Llama 3.3 70B Instruct (Cerebras)","limit":{"context":128000,"output":4096},"cost":{"input":0.85,"output":1.2},"updated":"2024-12-06"},"cerebras/glm-4.7":{"name":"GLM-4.7 (Cerebras)","limit":{"context":200000,"output":128000},"cost":{"input":2.25,"output":2.75},"updated":"2025-12-22"},"cerebras/gemma-4-31b-it":{"name":"Gemma 4 31B IT (Cerebras)","limit":{"context":131072,"output":32768},"cost":{"input":0.99,"output":1.49},"updated":"2026-04-02"},"cerebras/gpt-oss-120b":{"name":"GPT OSS 120B (Cerebras)","limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-05"},"alibaba/qwen-plus-latest":{"name":"Qwen Plus Latest (Alibaba Cloud)","limit":{"context":1000000,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5},"updated":"2024-09-09"},"alibaba/qwen3.7-plus":{"name":"Qwen3.7 Plus (Alibaba Cloud)","limit":{"context":983616,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"updated":"2026-06-02"},"alibaba/qwen3.8-flash":{"name":"Qwen3.8 Flash (Alibaba Cloud)","limit":{"context":983616,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"alibaba/qwen-plus":{"name":"Qwen Plus (Alibaba Cloud)","limit":{"context":131072,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5},"updated":"2025-09-11"},"alibaba/glm-5.3":{"name":"GLM-5.3 (Alibaba Cloud)","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28},"updated":"2026-08-14"},"alibaba/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B A10B (Alibaba Cloud)","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"alibaba/kimi-k2.5":{"name":"Kimi K2.5 (Alibaba Cloud)","limit":{"context":262144,"output":98304},"cost":{"input":0.574,"output":3.011},"updated":"2026-01"},"alibaba/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B (Alibaba Cloud)","limit":{"context":262144,"output":65536},"cost":{"input":0.375,"output":2.25},"updated":"2026-04-17"},"alibaba/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Alibaba Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":2.4,"output":4.8,"cache_read":0.2},"updated":"2026-04-24"},"alibaba/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Alibaba Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-10-17"},"alibaba/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Alibaba Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-09-10"},"alibaba/glm-5.2":{"name":"GLM-5.2 (Alibaba Cloud)","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28},"updated":"2026-06-13"},"alibaba/qwen-flash":{"name":"Qwen Flash (Alibaba Cloud)","limit":{"context":1000000,"output":32000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625},"updated":"2025-07-28"},"alibaba/qwen3.5-27b":{"name":"Qwen3.5 27B (Alibaba Cloud)","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"alibaba/qwen3.6-flash":{"name":"Qwen3.6 Flash (Alibaba Cloud)","limit":{"context":983616,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125},"updated":"2026-04-27"},"alibaba/qwen3.7-flash":{"name":"Qwen3.7 Flash (Alibaba Cloud)","limit":{"context":983616,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375},"updated":"2026-07-15"},"alibaba/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Alibaba Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":0.2,"output":0.4,"cache_read":0.04},"updated":"2026-04-24"},"alibaba/qwen3.8-max":{"name":"Qwen3.8 Max (Alibaba Cloud)","limit":{"context":983616,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"alibaba/kimi-k3":{"name":"Kimi K3 (Alibaba Cloud)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"alibaba/qwen-max":{"name":"Qwen Max (Alibaba Cloud)","limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4},"updated":"2025-01-25"},"alibaba/qwen3.6-plus":{"name":"Qwen3.6 Plus (Alibaba Cloud)","limit":{"context":983616,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"alibaba/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B A3B (Alibaba Cloud)","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"alibaba/qwen3-coder-flash":{"name":"Qwen3 Coder Flash (Alibaba Cloud)","limit":{"context":997952,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"updated":"2025-07-28"},"alibaba/glm-5":{"name":"GLM-5 (Alibaba Cloud)","limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58},"updated":"2026-02-12"},"alibaba/qwen35-397b-a17b":{"name":"Qwen3.5 397B A17B (Alibaba Cloud)","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-16"},"alibaba/qwen3.7-max":{"name":"Qwen3.7 Max (Alibaba Cloud)","limit":{"context":983616,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"alibaba/qwen3-vl-plus":{"name":"Qwen3 VL Plus (Alibaba Cloud)","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"cache_read":0.04,"cache_write":0.25},"updated":"2025-09-23"},"google-ai-studio/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"updated":"2026-05-07"},"google-ai-studio/gemini-3-flash-preview":{"name":"Gemini 3 Flash (Preview) (Google AI Studio)","limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google-ai-studio/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro (Preview) (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google-ai-studio/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"updated":"2026-07-21"},"google-ai-studio/gemini-3.6-flash":{"name":"Gemini 3.6 Flash (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-07-21"},"google-ai-studio/gemini-3.8-flash":{"name":"Gemini 3.8 Flash (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-09-02"},"google-ai-studio/gemini-4-argon":{"name":"Gemini 4 Argon (Google AI Studio)","limit":{"context":1048576,"output":1048576},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375},"updated":"2026-10-13"},"google-ai-studio/gemini-pro-latest":{"name":"Gemini Pro Latest (Google AI Studio)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-27"},"anthropic/claude-fable-5":{"name":"Claude Fable 5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-sonnet-4-5-20250929":{"name":"Claude Sonnet 4.5 (2025-09-29) (Anthropic)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (Anthropic)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (Anthropic)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (Anthropic)","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-haiku-4-5-20251001":{"name":"Claude Haiku 4.5 (2025-10-01) (Anthropic)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5 (Anthropic)","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5 (Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo V2.6 Pro (Xiaomi)","limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo V2.6 Flash (Xiaomi)","limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"vertex-anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7 (Vertex AI (Anthropic))","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"vertex-anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6 (Vertex AI (Anthropic))","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"vertex-anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (Vertex AI (Anthropic))","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"vertex-anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6 (Vertex AI (Anthropic))","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"vertex-anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (Vertex AI (Anthropic))","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"vertex-anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5 (Vertex AI (Anthropic))","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"vertex-anthropic/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5 (Vertex AI (Anthropic))","limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"reka-ai/reka-edge-2603":{"name":"Reka Edge 2603 (reka-ai)","limit":{"context":16384,"output":16384},"cost":{"input":0.1,"output":0.1},"updated":"2026-10-09"},"reka-ai/glm-5.3":{"name":"GLM-5.3 (reka-ai)","limit":{"context":1048576,"output":262144},"cost":{"input":1.17,"output":3.96,"cache_read":0.234},"updated":"2026-08-14"},"reka-ai/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (reka-ai)","limit":{"context":1048576,"output":393216},"cost":{"input":1.2,"output":3.3,"cache_read":0.13},"updated":"2026-04-24"},"runware/glm-5.3-flash":{"name":"GLM-5.3 Flash (Runware)","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"runware/glm-5.3":{"name":"GLM-5.3 (Runware)","limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.2},"updated":"2026-08-14"},"runware/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Runware)","limit":{"context":1048576,"output":384000},"cost":{"input":0.961,"output":1.922,"cache_read":0.079},"updated":"2026-04-24"},"runware/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Runware)","limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.01},"updated":"2026-09-10"},"runware/glm-5.2":{"name":"GLM-5.2 (Runware)","limit":{"context":1024000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"updated":"2026-06-13"},"runware/gemma-4-31b-it":{"name":"Gemma 4 31B IT (Runware)","limit":{"context":262144,"output":65536},"cost":{"input":0.102,"output":0.297,"cache_read":0.012},"updated":"2026-04-02"},"runware/kimi-k2.6":{"name":"Kimi K2.6 (Runware)","limit":{"context":262144,"output":131072},"cost":{"input":0.6,"output":3.05,"cache_read":0.13},"updated":"2026-04-21"},"runware/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Runware)","limit":{"context":1048576,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014},"updated":"2026-04-24"},"runware/kimi-k3":{"name":"Kimi K3 (Runware)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"runware/gpt-oss-120b":{"name":"GPT OSS 120B (Runware)","limit":{"context":131072,"output":32768},"cost":{"input":0.032,"output":0.14,"cache_read":0.032},"updated":"2025-08-05"},"bytedance/seed-2-0-lite-260428":{"name":"Seed 2.0 Lite (260428) (ByteDance)","limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2026-04-28"},"bytedance/seed-1-8-251228":{"name":"Seed 1.8 (251228) (ByteDance)","limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-12-18"},"bytedance/seed-1-6-flash-250715":{"name":"Seed 1.6 Flash (250715) (ByteDance)","limit":{"context":256000,"output":256000},"cost":{"input":0.07,"output":0.3,"cache_read":0.015},"updated":"2025-07-26"},"bytedance/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (ByteDance)","limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-04-24"},"bytedance/glm-5.2":{"name":"GLM-5.2 (ByteDance)","limit":{"context":1024000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"bytedance/glm-4.7":{"name":"GLM-4.7 (ByteDance)","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"bytedance/deepseek-v3.2":{"name":"DeepSeek V3.2 (ByteDance)","limit":{"context":131072,"output":32768},"cost":{"input":0.28,"output":0.42,"cache_read":0.056},"updated":"2025-12-01"},"bytedance/seed-1-6-250915":{"name":"Seed 1.6 (250915) (ByteDance)","limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-09-15"},"bytedance/seed-2-0-code-preview-260328":{"name":"Seed 2.0 Code Preview (260328) (ByteDance)","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-03-28"},"bytedance/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (ByteDance)","limit":{"context":1048576,"output":393216},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-04-24"},"bytedance/seed-1-6-250615":{"name":"Seed 1.6 (250615) (ByteDance)","limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05},"updated":"2025-06-25"},"bytedance/gpt-oss-120b":{"name":"GPT OSS 120B (ByteDance)","limit":{"context":128000,"output":32000},"cost":{"input":0.1,"output":0.5,"cache_read":0.02},"updated":"2025-08-05"},"bytedance/seed-2-0-mini-260428":{"name":"Seed 2.0 Mini (260428) (ByteDance)","limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"updated":"2026-04-28"},"bytedance/seed-2-0-pro-260328":{"name":"Seed 2.0 Pro (260328) (ByteDance)","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-03-28"},"azure-anthropic/claude-fable-5":{"name":"Claude Fable 5 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"azure-anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"azure-anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"azure-anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"azure-anthropic/claude-opus-5":{"name":"Claude Opus 5 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"azure-anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"azure-anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"azure-anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"azure-anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5 (Azure Anthropic)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"moonshot/kimi-k2.5":{"name":"Kimi K2.5 (Moonshot AI)","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"moonshot/kimi-k2.7-code":{"name":"Kimi K2.7 Code (Moonshot AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshot/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed (Moonshot AI)","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshot/kimi-k2.6":{"name":"Kimi K2.6 (Moonshot AI)","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshot/kimi-k3":{"name":"Kimi K3 (Moonshot AI)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"zai/glm-5.3-flash":{"name":"GLM-5.3 Flash (Z AI)","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai/glm-4.7-flashx":{"name":"GLM-4.7 FlashX (Z AI)","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"zai/glm-5.3":{"name":"GLM-5.3 (Z AI)","limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"zai/glm-5.2":{"name":"GLM-5.2 (Z AI)","limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai/glm-4.5-x":{"name":"GLM-4.5 X (Z AI)","limit":{"context":128000,"output":128000},"cost":{"input":2.2,"output":8.9,"cache_read":0.45},"updated":"2025-07-28"},"zai/glm-4.7":{"name":"GLM-4.7 (Z AI)","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"zai/glm-4.6v":{"name":"GLM-4.6V (Z AI)","limit":{"context":128000,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"},"zai/glm-5.1":{"name":"GLM-5.1 (Z AI)","limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai/glm-4.6v-flashx":{"name":"GLM-4.6V FlashX (Z AI)","limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004},"updated":"2025-12-08"},"zai/glm-4.5-airx":{"name":"GLM-4.5 AirX (Z AI)","limit":{"context":128000,"output":128000},"cost":{"input":1.1,"output":4.5,"cache_read":0.22},"updated":"2025-07-28"},"zai/glm-4.6":{"name":"GLM-4.6 (Z AI)","limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"zai/glm-4-32b-0414-128k":{"name":"GLM-4 32B (0414-128k) (Z AI)","limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.1},"updated":"2025-04-14"},"zai/glm-4.5-air":{"name":"GLM-4.5 Air (Z AI)","limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"updated":"2025-07-28"},"zai/glm-4.5v":{"name":"GLM-4.5V (Z AI)","limit":{"context":128000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"zai/glm-5":{"name":"GLM-5 (Z AI)","limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"zai/glm-4.5":{"name":"GLM-4.5 (Z AI)","limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"entrim/glm-5.3-flash":{"name":"GLM-5.3 Flash (entrim)","limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.35,"cache_read":0.0175},"updated":"2026-08-26"},"entrim/glm-5.3":{"name":"GLM-5.3 (entrim)","limit":{"context":1048576,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.15},"updated":"2026-08-14"},"entrim/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (entrim)","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.005},"updated":"2026-09-10"},"embercloud/qwen3-coder-next":{"name":"Qwen3 Coder Next (EmberCloud)","limit":{"context":262144,"output":262144},"cost":{"input":0.108,"output":0.675,"cache_read":0.06},"updated":"2026-02-03"},"embercloud/kimi-k2.5":{"name":"Kimi K2.5 (EmberCloud)","limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225},"updated":"2026-01"},"embercloud/glm-5.2":{"name":"GLM-5.2 (EmberCloud)","limit":{"context":203000,"output":131000},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"updated":"2026-06-13"},"embercloud/glm-4.7":{"name":"GLM-4.7 (EmberCloud)","limit":{"context":200000,"output":131000},"cost":{"input":0.38,"output":1.98,"cache_read":0.19},"updated":"2025-12-22"},"embercloud/glm-5.1":{"name":"GLM-5.1 (EmberCloud)","limit":{"context":203000,"output":131000},"cost":{"input":0.931,"output":2.93,"cache_read":0.173},"updated":"2026-04-07"},"embercloud/glm-4.5-air":{"name":"GLM-4.5 Air (EmberCloud)","limit":{"context":131000,"output":96000},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"updated":"2025-07-28"},"embercloud/glm-5":{"name":"GLM-5 (EmberCloud)","limit":{"context":203000,"output":131000},"cost":{"input":0.72,"output":2.3,"cache_read":0.144},"updated":"2026-02-12"},"embercloud/glm-4.7-flash":{"name":"GLM-4.7 Flash (EmberCloud)","limit":{"context":200000,"output":131000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"embercloud/glm-4.5":{"name":"GLM-4.5 (EmberCloud)","limit":{"context":131000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"google-vertex/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"updated":"2026-05-07"},"google-vertex/gemini-3-flash-preview":{"name":"Gemini 3 Flash (Preview) (Google Vertex AI)","limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"google-vertex/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro (Preview) (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"google-vertex/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"updated":"2026-07-21"},"google-vertex/gemini-3.7-flash":{"name":"Gemini 3.7 Flash (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-08-13"},"google-vertex/gemini-3.6-flash":{"name":"Gemini 3.6 Flash (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-07-21"},"google-vertex/gemini-3.8-flash":{"name":"Gemini 3.8 Flash (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"updated":"2026-09-02"},"google-vertex/gemini-3.5-flash":{"name":"Gemini 3.5 Flash (Google Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"updated":"2026-05-19"},"google-vertex/gemini-4-argon":{"name":"Gemini 4 Argon (Google Vertex AI)","limit":{"context":1048576,"output":1048576},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375},"updated":"2026-09-30"},"azure-ai-foundry/grok-4-1-fast-non-reasoning":{"name":"Grok 4.1 Fast Non-Reasoning (Azure AI Foundry)","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5},"updated":"2025-11-19"},"azure-ai-foundry/grok-4-3":{"name":"Grok 4.3 (Azure AI Foundry)","limit":{"context":20000,"output":8192},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-30"},"azure-ai-foundry/grok-4-1-fast-reasoning":{"name":"Grok 4.1 Fast Reasoning (Azure AI Foundry)","limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5},"updated":"2025-11-19"},"tencent/hy-mt2-plus":{"name":"Hy-MT2 Plus (Tencent Cloud)","limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295},"updated":"2026-05-21"},"tencent/glm-5v-turbo":{"name":"GLM-5V Turbo (Tencent Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"tencent/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Tencent Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.00363},"updated":"2026-04-24"},"tencent/hy4-preview":{"name":"Hy4 Preview (Tencent Cloud)","limit":{"context":1000000,"output":65536},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/glm-5.2":{"name":"GLM-5.2 (Tencent Cloud)","limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"tencent/kimi-k2.7-code":{"name":"Kimi K2.7 Code (Tencent Cloud)","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"tencent/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed (Tencent Cloud)","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"tencent/glm-5.1":{"name":"GLM-5.1 (Tencent Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"tencent/glm-5-turbo":{"name":"GLM-5 Turbo (Tencent Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"tencent/kimi-k2.6":{"name":"Kimi K2.6 (Tencent Cloud)","limit":{"context":262144,"output":262144},"cost":{"input":0.858,"output":3.566,"cache_read":0.145},"updated":"2026-04-21"},"tencent/mimo-v2.5-pro":{"name":"MiMo V2.5 Pro (Tencent Cloud)","limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-04-22"},"tencent/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Tencent Cloud)","limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"tencent/kimi-k3":{"name":"Kimi K3 (Tencent Cloud)","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"tencent/hy3":{"name":"Hy3 (Tencent Cloud)","limit":{"context":262144,"output":131072},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"tencent/glm-5":{"name":"GLM-5 (Tencent Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"tencent/minimax-m3":{"name":"MiniMax M3 (Tencent Cloud)","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"tencent/minimax-m2.7":{"name":"MiniMax M2.7 (Tencent Cloud)","limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"vertex-openai/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder 480B A35B Instruct (Vertex AI (OpenAI-compatible))","limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.8,"cache_read":0.022},"updated":"2025-04"},"vertex-openai/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507 (Vertex AI (OpenAI-compatible))","limit":{"context":262144,"output":32768},"cost":{"input":0.22,"output":0.88},"updated":"2025-07-21"},"vertex-openai/grok-4-20-non-reasoning":{"name":"Grok 4.20 Non-Reasoning (Vertex AI (OpenAI-compatible))","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"vertex-openai/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct (Vertex AI (OpenAI-compatible))","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"vertex-openai/qwen3-next-80b-a3b-thinking":{"name":"Qwen3 Next 80B A3B Thinking (Vertex AI (OpenAI-compatible))","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"vertex-openai/kimi-k2-thinking":{"name":"Kimi K2 Thinking (Vertex AI (OpenAI-compatible))","limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":2.5,"cache_read":0.06},"updated":"2025-11-06"},"vertex-openai/grok-4-20-reasoning":{"name":"Grok 4.20 Reasoning (Vertex AI (OpenAI-compatible))","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"vertex-openai/glm-4.7":{"name":"GLM-4.7 (Vertex AI (OpenAI-compatible))","limit":{"context":202752,"output":128000},"cost":{"input":0.6,"output":2.2},"updated":"2025-12-22"},"vertex-openai/deepseek-v3.2":{"name":"DeepSeek V3.2 (Vertex AI (OpenAI-compatible))","limit":{"context":163840,"output":65536},"cost":{"input":0.56,"output":1.68,"cache_read":0.056},"updated":"2025-12-01"},"vertex-openai/grok-4-6":{"name":"Grok 4.6 (Vertex AI (OpenAI-compatible))","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"vertex-openai/glm-5":{"name":"GLM-5 (Vertex AI (OpenAI-compatible))","limit":{"context":202752,"output":32768},"cost":{"input":1,"output":3.2,"cache_read":0.1},"updated":"2026-02-12"},"together-ai/glm-5.3-flash":{"name":"GLM-5.3 Flash (Together AI)","limit":{"context":1048576,"output":943717},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"together-ai/glm-5.3":{"name":"GLM-5.3 (Together AI)","limit":{"context":1048576,"output":943717},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"together-ai/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B (Together AI)","limit":{"context":1010000,"output":909000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"together-ai/deepseek-v4-pro":{"name":"DeepSeek V4 Pro (Together AI)","limit":{"context":1048576,"output":163840},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"updated":"2026-04-24"},"together-ai/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Together AI)","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"together-ai/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Together AI)","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"together-ai/glm-4.7":{"name":"GLM-4.7 (Together AI)","limit":{"context":202752,"output":128000},"cost":{"input":0.45,"output":2},"updated":"2025-12-22"},"together-ai/muse-glimmer-30b":{"name":"Muse Glimmer 30B (Together AI)","limit":{"context":131072,"output":117964},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-08-10"},"together-ai/deepseek-v4-flash":{"name":"DeepSeek V4 Flash (Together AI)","limit":{"context":163840,"output":163840},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"updated":"2026-04-24"},"together-ai/kimi-k3":{"name":"Kimi K3 (Together AI)","limit":{"context":1000000,"output":1000000},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"together-ai/gpt-oss-120b":{"name":"GPT OSS 120B (Together AI)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"together-ai/minimax-m3":{"name":"MiniMax M3 (Together AI)","limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"}}},"tencent-tokenhub":{"name":"Tencent TokenHub","npm":"@ai-sdk/openai-compatible","models":{"hy3-preview":{"name":"Hy3 preview","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-20"},"hy4-preview":{"name":"Hy4 preview","limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"hy3":{"name":"Hy3","limit":{"context":256000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-06"}}},"zai":{"name":"Z.AI","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"updated":"2026-08-26"},"glm-4.7-flashx":{"name":"GLM-4.7-FlashX","limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"updated":"2026-01-19"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-08-14"},"glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-04-01"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-12-22"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-04-07"},"glm-4.6v-flash":{"name":"GLM-4.6V-Flash","limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-08"},"glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-03-16"},"glm-5.3-flashx":{"name":"GLM-5.3-FlashX","limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"updated":"2026-09-18"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-09-30"},"glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"updated":"2025-07-28"},"glm-4.5v":{"name":"GLM-4.5V","limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"updated":"2026-02-12"},"glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-19"},"glm-4.5-flash":{"name":"GLM-4.5-Flash","limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-07-28"},"glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"updated":"2025-07-28"}}},"iteracompute":{"name":"IteraCompute","npm":"@ai-sdk/openai-compatible","models":{"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":524288},"cost":{"input":0.299,"output":1.19,"cache_read":0.045},"updated":"2026-06-01"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (legacy alias)","limit":{"context":1048576,"output":393216},"cost":{"input":0.29,"output":1.16,"cache_read":0.0058},"updated":"2026-09-10"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393216},"cost":{"input":0.29,"output":1.16,"cache_read":0.0058},"updated":"2026-09-10"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":393216},"cost":{"input":0.89,"output":2.69,"cache_read":0.03},"updated":"2026-08-22"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":235929},"cost":{"input":0.69,"output":3.29,"cache_read":0.15},"updated":"2026-06-12"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":999999},"cost":{"input":2.39,"output":11.99,"cache_read":0.24},"updated":"2026-07-16"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.099,"output":0.35,"cache_read":0.025},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":0.99,"output":3.45,"cache_read":0.245},"updated":"2026-08-14"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1048576,"output":131072},"cost":{"input":1.95,"output":5.7,"cache_read":0.245},"updated":"2026-08-12"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-14"}}},"amd":{"name":"AMD","npm":"@ai-sdk/openai-compatible","models":{"DeepSeek-V4-Flash-Vision-Exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-01"},"Qwen3.8-27B":{"name":"Qwen3.8 27B","limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-08-14"},"DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-10"},"DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-07-31"},"Qwen3.8-Flash-Next":{"name":"Qwen3.8 Flash Next","limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-27"},"MiniCPM5-2B":{"name":"MiniCPM5-2B","limit":{"context":131072,"output":131072},"cost":{"input":0.124,"output":0.7425,"cache_read":0.124},"updated":"2026-09-12"}}},"kosmik":{"name":"Kosmik Compute","npm":"@ai-sdk/openai-compatible","models":{"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.35,"output":2.2,"cache_read":0.09},"updated":"2026-08-14"}}},"chutes":{"name":"Chutes","npm":"@ai-sdk/openai-compatible","models":{"Nemotron-3-Nano-Omni-30B-TEE":{"name":"Nemotron 3 Nano Omni 30B TEE","limit":{"context":131072,"output":0},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995},"updated":"2026-07-23"},"unsloth/Mistral-Nemo-Instruct-2407-TEE":{"name":"Mistral Nemo Instruct 2407 TEE","limit":{"context":131072,"output":131072},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995},"updated":"2024-07-01"},"zai-org/GLM-5.2-TEE":{"name":"GLM 5.2 TEE","limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":3.95,"cache_read":0.12499999999999997},"updated":"2026-06-13"},"zai-org/GLM-5.1-TEE":{"name":"GLM 5.1 TEE","limit":{"context":202752,"output":65535},"cost":{"input":0.98,"output":3.08,"cache_read":0.09799999999999998},"updated":"2026-04-07"},"Qwen/Qwen3.6-27B-TEE":{"name":"Qwen3.6 27B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999994},"updated":"2026-04-22"},"Qwen/Qwen3.5-397B-A17B-TEE":{"name":"Qwen3.5 397B A17B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3,"cache_read":0.04499999999999999},"updated":"2026-02-15"},"Qwen/Qwen3.8-27B-TEE":{"name":"Qwen3.8 27B TEE","limit":{"context":262144,"output":65536},"cost":{"input":0.039,"output":1.25,"cache_read":0.003899999999999999},"updated":"2026-08-16"},"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE":{"name":"Qwen3 235B A22B Thinking 2507 TEE","limit":{"context":262144,"output":262144},"cost":{"input":0.2989,"output":1.1957,"cache_read":0.029889999999999993},"updated":"2026-06-21"},"Qwen/Qwen3-32B-TEE":{"name":"Qwen3 32B TEE","limit":{"context":40960,"output":40960},"cost":{"input":0.104,"output":0.416,"cache_read":0.010399999999999998},"updated":"2025-04"},"moonshotai/Kimi-K3-TEE":{"name":"Kimi K3 TEE","limit":{"context":1048576,"output":65535},"cost":{"input":1.85,"output":9.5,"cache_read":0.18499999999999997},"updated":"2026-07-29"},"moonshotai/Kimi-K2.6-TEE":{"name":"Kimi K2.6 TEE","limit":{"context":262144,"output":65535},"cost":{"input":0.45,"output":1.95,"cache_read":0.04499999999999999},"updated":"2026-04-21"},"google/gemma-4-31B-turbo-TEE":{"name":"gemma 4 31B turbo TEE","limit":{"context":131072,"output":65536},"cost":{"input":0.12,"output":0.37,"cache_read":0.011999999999999997},"updated":"2026-04-02"},"deepseek-ai/DeepSeek-V4-Flash-0731-TEE":{"name":"DeepSeek V4 Flash 0731 TEE","limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.04399999999999999},"updated":"2026-08-02"},"deepseek-ai/DeepSeek-V3.2-TEE":{"name":"DeepSeek V3.2 TEE","limit":{"context":131072,"output":65536},"cost":{"input":1,"output":1,"cache_read":0.09999999999999998},"updated":"2026-06-21"}}},"hyper":{"name":"Charm Hyper","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.16332,"output":0.5444,"cache_read":0.031575},"updated":"2026-08-31"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":1.2,"output":4.8,"cache_read":0.24},"updated":"2026-07-22"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.044},"updated":"2026-08-02"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":128000},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.283088},"updated":"2026-08-31"},"kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":26214},"cost":{"input":0.6,"output":2.5,"cache_read":0.3},"updated":"2026-09-02"},"qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-26"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":262144},"cost":{"input":0.33,"output":1.31,"cache_read":0.03},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":32768},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.152432},"updated":"2026-07-22"},"gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":256000,"output":25600},"cost":{"input":0.098,"output":0.334,"cache_read":0.049},"updated":"2026-07-22"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":256000,"output":16000},"cost":{"input":1.03436,"output":4.3552,"cache_read":0.206872},"updated":"2026-07-22"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-08-26"},"qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":64000},"cost":{"input":0.2,"output":0.8,"cache_read":0.04},"updated":"2026-07-30"},"prism":{"name":"Prism","limit":{"context":1000000,"output":16000},"cost":{"input":3.2664,"output":16.332,"cache_read":0.32664},"updated":"2026-10-15"},"qwen3.8-max":{"name":"Qwen3.8 Max Preview","limit":{"context":1000000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-07-19"},"inkling":{"name":"Inkling","limit":{"context":1048576,"output":65536},"cost":{"input":1.0888,"output":4.40964,"cache_read":0.185096},"updated":"2026-09-05"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":16000},"cost":{"input":3.2664,"output":16.332,"cache_read":0.32664},"updated":"2026-07-30"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":13107},"cost":{"input":0.178,"output":0.68,"cache_read":0.089},"updated":"2026-07-22"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":262144},"cost":{"input":1.437216,"output":4.311648,"cache_read":0.047907},"updated":"2026-08-14"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":512000,"output":512000},"cost":{"input":0.32664,"output":1.30656,"cache_read":0.064239},"updated":"2026-07-31"},"qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"updated":"2026-07-22"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":262100,"output":6553},"cost":{"input":0.484,"output":1.852,"cache_read":0.242},"updated":"2026-07-22"}}},"kuae-cloud-coding-plan":{"name":"KUAE Cloud Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"GLM-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-22"}}},"upstage":{"name":"Upstage","npm":"@ai-sdk/openai-compatible","models":{"solar-pro4":{"name":"Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-08-06"},"solar-mini4":{"name":"Solar Mini 4","limit":{"context":524288,"output":131072},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2026-09-22"},"solar-pro2":{"name":"solar-pro2","limit":{"context":65536,"output":8192},"cost":{"input":0.25,"output":0.25},"updated":"2025-05-20"},"solar-mini":{"name":"solar-mini","limit":{"context":32768,"output":4096},"cost":{"input":0.15,"output":0.15},"updated":"2025-04-22"},"solar-pro3":{"name":"solar-pro3","limit":{"context":131072,"output":8192},"cost":{"input":0.25,"output":0.25},"updated":"2026-01"}}},"melious":{"name":"Melious","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.11592,"output":0.46368,"cache_read":0.023184},"updated":"2026-08-26"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.11592,"output":0.2898,"cache_read":0.023184},"updated":"2026-07-31"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.1592,"output":3.4776,"cache_read":0.23184},"updated":"2026-08-14"},"deepseek-r1-0528":{"name":"DeepSeek-R1","limit":{"context":164000,"output":32768},"cost":{"input":0.69552,"output":2.78208,"cache_read":0.185472},"updated":"2025-05-29"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262000,"output":262000},"cost":{"input":0.5796,"output":2.95596,"cache_read":0.139104},"updated":"2026-01"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.23184,"output":1.1592,"cache_read":0.011592},"updated":"2026-09-10"},"deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":164000,"output":64000},"cost":{"input":0.34776,"output":0.5796,"cache_read":0.092736},"updated":"2025-12-01"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.81144,"output":3.4776,"cache_read":0.220248},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":203000,"output":131072},"cost":{"input":1.50696,"output":4.6368,"cache_read":0.370944},"updated":"2026-04-07"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":256000,"output":256000},"cost":{"input":0.81144,"output":4.0572,"cache_read":0.266616},"updated":"2026-04-21"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1000000,"output":131072},"cost":{"input":3.1878,"output":15.939,"cache_read":0.788256},"updated":"2026-07-16"},"glm-5":{"name":"GLM-5","limit":{"context":203000,"output":131072},"cost":{"input":1.10124,"output":3.36168,"cache_read":0.266616},"updated":"2026-02-12"}}},"umans-ai-coding-plan":{"name":"Umans AI Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"umans-deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-10"},"umans-coder":{"name":"Umans Coder","limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"umans-glm-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"umans-flash":{"name":"Umans Flash","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-17"},"umans-deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-31"},"umans-glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"umans-qwen3.6-35b-a3b":{"name":"Qwen3.6 35B A3B","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-17"},"umans-kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-07-16"}}},"google-vertex":{"name":"Vertex","npm":"@ai-sdk/google-vertex","models":{"gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60,"cache_read":0.05},"updated":"2026-05-28"},"gemini-2.5-flash-tts":{"name":"Gemini 2.5 Flash TTS","limit":{"context":32768,"output":16384},"cost":{"input":0.5,"output":10},"updated":"2025-12-10"},"gemini-2.5-pro-tts":{"name":"Gemini 2.5 Pro TTS","limit":{"context":32768,"output":16384},"cost":{"input":1,"output":20},"updated":"2025-12-10"},"claude-opus-4-6@default":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"claude-haiku-4-5@20251001":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"mistral-small-2503":{"name":"Mistral Small 3.1 24B","limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-03-17"},"gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"claude-opus-4-7@default":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-sonnet-4@20250514":{"name":"Claude Sonnet 4","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"claude-haiku-5-5@default":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"claude-sonnet-5@default":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"claude-opus-5-5@default":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5@20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120,"cache_read":0.2},"updated":"2026-05-28"},"gemini-nano-banana-2.1":{"name":"Nano Banana 2.1","limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":30,"cache_read":0.15},"updated":"2026-10-06"},"claude-opus-4-8@default":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"claude-opus-4-1@20250805":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"claude-fable-5@default":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"claude-sonnet-5-5@default":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-08-13"},"claude-fable-5-1@default":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"claude-opus-4@20250514":{"name":"Claude Opus 4","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-07-21"},"gemini-embedding-001":{"name":"Gemini Embedding 001","limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0},"updated":"2025-05-20"},"claude-sonnet-4-6@default":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"claude-sonnet-4-5@20250929":{"name":"Claude Sonnet 4.5","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"updated":"2026-09-02"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"},"gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":30,"cache_read":0.025},"updated":"2026-06-30"},"mistral-medium-3":{"name":"Mistral Medium 3","limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2},"updated":"2025-05-07"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"codestral-2":{"name":"Codestral 2","limit":{"context":128000,"output":8192},"cost":{"input":0.3,"output":0.9},"updated":"2025-07-30"},"claude-opus-5@default":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30},"updated":"2025-08-26"},"xai/grok-4.1-fast-reasoning":{"name":"Grok 4.1 Fast (Reasoning)","limit":{"context":128000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"xai/grok-4.1-fast-non-reasoning":{"name":"Grok 4.1 Fast","limit":{"context":128000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-11-19"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":200000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.20-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":524288,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":524288,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"xai/grok-4.20-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"zai-org/glm-5.2-maas":{"name":"GLM-5.2","limit":{"context":1000000,"output":64000},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-06-13"},"zai-org/glm-4.7-maas":{"name":"GLM-4.7","limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.06},"updated":"2026-01-06"},"zai-org/glm-5-maas":{"name":"GLM-5","limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.1},"updated":"2026-02-12"},"openai/gpt-oss-20b-maas":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.25,"cache_read":0.007},"updated":"2025-08-05"},"openai/gpt-oss-120b-maas":{"name":"GPT OSS 120B","limit":{"context":131072,"output":131072},"cost":{"input":0.09,"output":0.36},"updated":"2025-08-05"},"meta/llama-3.3-70b-instruct-maas":{"name":"Llama 3.3 70B Instruct","limit":{"context":128000,"output":8192},"cost":{"input":0.72,"output":0.72},"updated":"2025-04-29"},"meta/llama-4-maverick-17b-128e-instruct-maas":{"name":"Llama 4 Maverick 17B 128E Instruct","limit":{"context":524288,"output":8192},"cost":{"input":0.35,"output":1.15},"updated":"2025-04-29"},"meta/llama-4-scout-17b-16e-instruct-maas":{"name":"Llama 4 Scout 17B Instruct","limit":{"context":1310720,"output":8192},"cost":{"input":0.25,"output":0.7},"updated":"2025-04-05"},"moonshotai/kimi-k2-thinking-maas":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.06},"updated":"2025-11-13"},"google/gemma-4-26b-a4b-it-maas":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":128000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-04-02"},"qwen/qwen3-235b-a22b-instruct-2507-maas":{"name":"Qwen3 235B A22B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.88},"updated":"2025-08-13"},"deepseek-ai/deepseek-v3.2-maas":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.56,"output":1.68,"cache_read":0.056},"updated":"2026-04-04"},"deepseek-ai/deepseek-v3.1-maas":{"name":"DeepSeek V3.1","limit":{"context":163840,"output":32768},"cost":{"input":0.6,"output":1.7,"cache_read":0.06},"updated":"2025-08-28"}}},"modal":{"name":"Modal","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.3-Flash":{"name":"GLM 5.3 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.45,"output":1.5,"cache_read":0.09},"updated":"2026-08-26"},"Qwen/Qwen3.8-2.4T-A95B":{"name":"Qwen3.8-Max","limit":{"context":1010000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3,"reasoning":15},"updated":"2026-07-16"},"thinkingmachines/Inkling-NVFP4":{"name":"Inkling","limit":{"context":1048576,"output":262144},"cost":{"input":1.2,"output":5,"cache_read":0.27},"updated":"2026-07-15"}}},"sensenova":{"name":"SenseNova (China)","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-22"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-13"},"sensenova-6.8-flash-lite":{"name":"SenseNova 6.8 Flash Lite","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-28"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-16"}}},"greenpt":{"name":"GreenPT","npm":"@ai-sdk/openai-compatible","models":{"glm-5.2-ponytail-lite":{"name":"GLM-5.2 Ponytail Lite","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":16384},"cost":{"input":0.798,"output":4.959},"updated":"2026-02-15"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.127754,"output":0.511016,"cache_read":0.0255508},"updated":"2026-08-26"},"gemma-3-27b-it":{"name":"Gemma 3 27B","limit":{"context":40000,"output":8192},"cost":{"input":0.342,"output":0.684},"updated":"2025-03-12"},"qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":1.026,"output":3.078},"updated":"2025-07-21"},"deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.1596,"output":0.399,"cache_read":0.0456},"updated":"2026-07-31"},"mistral-medium-3.5-128b":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":16384},"cost":{"input":2.052,"output":10.26},"updated":"2026-04-29"},"voxtral-small-24b-2507":{"name":"Voxtral Small 24B","limit":{"context":32768,"output":16384},"cost":{"input":0.228,"output":0.513},"updated":"2025-07-15"},"pixtral-12b-2409":{"name":"Pixtral 12B","limit":{"context":128000,"output":4096},"cost":{"input":0.285,"output":0.285},"updated":"2024-09-01"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.27754,"output":5.11016,"cache_read":0.319385},"updated":"2026-08-14"},"mistral-small-3.2-24b-instruct-2506":{"name":"Mistral Small 3.2","limit":{"context":128000,"output":32768},"cost":{"input":0.228,"output":0.456},"updated":"2025-06-20"},"glm-5.2-ponytail-ultra":{"name":"GLM-5.2 Ponytail Ultra","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":100000,"output":16384},"cost":{"input":1.254,"output":1.254},"updated":"2024-12-06"},"glm-5.2-caveman":{"name":"GLM-5.2 Caveman","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":32768},"cost":{"input":0.342,"output":2.052},"updated":"2026-04-17"},"glm-5.2-honey":{"name":"GLM-5.2 Honey","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.255552,"output":1.27776,"cache_read":0.0127776},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"glm-5.2-ponytail":{"name":"GLM-5.2 Ponytail","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"green-s-pro":{"name":"Green S Pro","limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0},"updated":"2025-02"},"green-r-raw":{"name":"Green R Raw","limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083},"updated":"2025-08-05"},"glm-5.2-honey-lite":{"name":"GLM-5.2 Honey Lite","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"green-s":{"name":"Green S","limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0},"updated":"2025-01"},"glm-5.2-caveman-ultra":{"name":"GLM-5.2 Caveman Ultra","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"glm-5.2-honey-ultra":{"name":"GLM-5.2 Honey Ultra","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.9006,"output":4.389,"cache_read":0.1881},"updated":"2026-06-12"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.756,"output":5.518},"updated":"2026-04-07"},"devstral-2-123b-instruct-2512":{"name":"Devstral 2","limit":{"context":200000,"output":16384},"cost":{"input":0.57,"output":2.736},"updated":"2025-12-09"},"kimi-k2.6-fast":{"name":"Kimi K2.6 Fast","limit":{"context":262144,"output":262144},"cost":{"input":1.655,"output":8.778},"updated":"2026-04-21"},"qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":1.083},"updated":"2025-04"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.7524,"output":4.275,"cache_read":0.2508},"updated":"2026-04-21"},"glm-5.2-caveman-lite":{"name":"GLM-5.2 Caveman Lite","limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"updated":"2026-06-13"},"holo2-30b-a3b":{"name":"Holo2 30B A3B","limit":{"context":22016,"output":16384},"cost":{"input":0.399,"output":0.969},"updated":"2025-11"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3.762,"output":18.81,"cache_read":0.9405},"updated":"2026-07-16"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.228,"output":0.798},"updated":"2025-08-05"},"gemma4":{"name":"gemma4","limit":{"context":262144,"output":32768},"cost":{"input":0.57,"output":1.71},"updated":"2026-04-02"},"green-l":{"name":"Green L","limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912},"updated":"2025-06-20"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.1938,"output":1.129,"cache_read":0.0627},"updated":"2026-02-12"},"green-r":{"name":"Green R","limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083},"updated":"2025-08-05"},"green-l-raw":{"name":"Green L Raw","limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912},"updated":"2025-06-20"}}},"zhipuai-coding-plan":{"name":"Zhipu AI Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-26"},"glm-5.3-highspeed":{"name":"GLM-5.3 Highspeed","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-08-14"},"glm-4.6v":{"name":"GLM-4.6V","limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"}}},"tencent-coding-plan":{"name":"Tencent Coding Plan (China)","npm":"@ai-sdk/openai-compatible","models":{"hunyuan-2.0-thinking":{"name":"Tencent HY 2.0 Think","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-08"},"hunyuan-turbos":{"name":"Hunyuan-TurboS","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-08"},"kimi-k2.5":{"name":"Kimi-K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-27"},"hunyuan-2.0-instruct":{"name":"Tencent HY 2.0 Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-08"},"hunyuan-t1":{"name":"Hunyuan-T1","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-08"},"tc-code-latest":{"name":"Auto","limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-03-08"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-11"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"}}},"auriko":{"name":"Auriko","npm":"@ai-sdk/openai-compatible","models":{"qwen-3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-04-02"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8},"updated":"2026-01"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"updated":"2026-04-24"},"minimax-m2-7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_write":0.375},"updated":"2026-03-18"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-17"},"gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"minimax-m2-7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_write":0.375},"updated":"2026-03-18"},"grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-17"}}},"cloudferro-sherlock":{"name":"CloudFerro Sherlock","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":70000,"output":70000},"cost":{"input":2.92,"output":2.92},"updated":"2024-12-06"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":262144,"output":131072},"cost":{"input":0.34,"output":4.48},"updated":"2026-08-14"},"openai/gpt-oss-120b":{"name":"OpenAI GPT OSS 120B","limit":{"context":131000,"output":131000},"cost":{"input":2.92,"output":2.92},"updated":"2025-08-28"},"speakleash/Bielik-11B-v3.0-Instruct":{"name":"Bielik 11B v3.0 Instruct","limit":{"context":32000,"output":32000},"cost":{"input":0.67,"output":0.67},"updated":"2025-03-13"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196000,"output":16000},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-05"}}},"aki-io":{"name":"AKI.IO","npm":"@ai-sdk/openai-compatible","models":{"gemma4-26b":{"name":"Gemma 4 26B A4B IT","limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.5},"updated":"2026-04-02"},"qwen3.6-35b":{"name":"Qwen3.6 35B-A3B","limit":{"context":256000,"output":32768},"cost":{"input":0.15,"output":0.5},"updated":"2026-04-17"},"glm5.3-754b":{"name":"GLM-5.3","limit":{"context":524288,"output":81920},"cost":{"input":1,"output":3.5,"cache_read":0.25},"updated":"2026-08-14"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":2.2,"cache_read":0.1},"updated":"2026-08-14"},"deepseek-v4.1-flash-552b":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":81920},"cost":{"input":0.25,"output":1,"cache_read":0.1},"updated":"2026-09-10"},"mistral4-119b":{"name":"Mistral Small 4","limit":{"context":262144,"output":81920},"cost":{"input":0.2,"output":0.6},"updated":"2026-03-16"},"gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.55},"updated":"2025-08-05"}}},"novita-ai":{"name":"Novita AI","npm":"@ai-sdk/openai-compatible","models":{"meta-llama/llama-4-scout-17b-16e-instruct":{"name":"Llama 4 Scout 17B Instruct","limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59},"updated":"2025-04-05"},"meta-llama/llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":12288,"output":12288},"cost":{"input":0.135,"output":0.4},"updated":"2024-12-06"},"meta-llama/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":131000,"output":32000},"cost":{"input":0.02,"output":0.02},"updated":"2024-09-25"},"meta-llama/llama-3.1-8b-instruct":{"name":"Llama-3.1-8B-Instruct","limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.05},"updated":"2024-07-23"},"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"name":"Llama 4 Maverick 17B Instruct","limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85},"updated":"2025-04-05"},"minimax/minimax-m2.7-highspeed":{"name":"MiniMax-M2.7-highspeed","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"updated":"2026-03-18"},"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"zai-org/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai-org/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"zai-org/autoglm-phone-9b-multilingual":{"name":"AutoGLM Phone 9B Multilingual","limit":{"context":65536,"output":65536},"cost":{"input":0.035,"output":0.138},"updated":"2025-12-10"},"zai-org/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai-org/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"zai-org/glm-4.6v":{"name":"GLM-4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"updated":"2025-12-08"},"zai-org/glm-5.1":{"name":"GLM-5.1","limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai-org/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"zai-org/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"updated":"2025-07-28"},"zai-org/glm-4.5v":{"name":"GLM-4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"zai-org/glm-5":{"name":"GLM-5","limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"zai-org/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"inclusionai/ling-3.0-flash-fin":{"name":"Ling 3.0 Flash Fin","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-03"},"inclusionai/ling-3.1-flash":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.9,"cache_read":0.06},"updated":"2026-09-29"},"inclusionai/ling-3.0-flash-sante":{"name":"Ling 3.0 Flash Sante","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-04"},"inclusionai/ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"updated":"2026-09-10"},"inclusionai/ling-3.0-flash":{"name":"Ling 3.0 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-07-23"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25},"updated":"2025-08-05"},"xiaomimimo/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomimimo/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"xiaomimimo/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043},"updated":"2026-04-22"},"xiaomimimo/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034},"updated":"2026-04-22"},"paddlepaddle/paddleocr-vl":{"name":"PaddleOCR VL","limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.02},"updated":"2025-10-16"},"baidu/cobuddy":{"name":"CoBuddy","limit":{"context":131072,"output":65536},"cost":{"input":0.28,"output":1.13,"cache_read":0.07},"updated":"2026-05-06"},"baidu/ernie-4.5-21B-a3b":{"name":"ERNIE 4.5 21B A3B","limit":{"context":120000,"output":8000},"cost":{"input":0.07,"output":0.28},"updated":"2025-06-30"},"deepseek/deepseek-r1-0528-qwen3-8b":{"name":"DeepSeek R1 0528 Qwen3 8B","limit":{"context":128000,"output":32000},"cost":{"input":0.06,"output":0.09},"updated":"2025-05-29"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":393216},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"updated":"2026-07-31"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5,"cache_read":0.35},"updated":"2025-05-28"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":393216},"cost":{"input":1.6,"output":3.2,"cache_read":0.135},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"deepseek/deepseek_v3":{"name":"DeepSeek-V3","limit":{"context":64000,"output":16000},"cost":{"input":0.89,"output":0.89},"updated":"2024-12-26"},"deepseek/deepseek-r1-turbo":{"name":"DeepSeek R1 (Turbo)","limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5},"updated":"2025-05-29"},"deepseek/deepseek-ocr-2":{"name":"DeepSeek OCR 2","limit":{"context":8192,"output":8192},"cost":{"input":0.03,"output":0.03},"updated":"2026-01-27"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"baai/bge-m3":{"name":"BGE M3","limit":{"context":8192,"output":0},"cost":{"input":0.01,"output":0},"updated":"2024-01-30"},"baai/bge-reranker-v2-m3":{"name":"BGE Reranker V2 M3","limit":{"context":8000,"output":0},"cost":{"input":0.01,"output":0},"updated":"2024-03-15"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.2},"updated":"2025-12-15"},"gryphe/mythomax-l2-13b":{"name":"MythoMax L2 13B","limit":{"context":4096,"output":3200},"cost":{"input":0.09,"output":0.09},"updated":"2023-08-10"},"apodex/apodex-1.1-mini":{"name":"Apodex 1.1 Mini","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-08-24"},"minimaxai/minimax-m1-80k":{"name":"MiniMax M1 80K","limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2},"updated":"2025-06-17"},"moonshotai/kimi-k2-instruct":{"name":"Kimi K2 Instruct","limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3},"updated":"2025-07-11"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"updated":"2026-01"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 Instruct 0905","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"updated":"2025-09-05"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":98304,"output":16384},"cost":{"input":0.119,"output":0.2},"updated":"2025-03-12"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"updated":"2026-04-02"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":8192},"cost":{"input":0.05,"output":0.1},"updated":"2025-03-12"},"mindai/macaron-v1-tall":{"name":"Macaron V1 Tall","limit":{"context":262144,"output":32768},"cost":{"input":0.2475,"output":1.43,"cache_read":0.044},"updated":"2026-07-21"},"mindai/macaron-v1-venti":{"name":"Macaron V1 Venti","limit":{"context":1048576,"output":131072},"cost":{"input":0.825,"output":2.475,"cache_read":0.165},"updated":"2026-07-21"},"baichuan/baichuan-m2-32b":{"name":"Baichuan M2 32B","limit":{"context":131072,"output":131072},"cost":{"input":0.07,"output":0.07},"updated":"2025-08-13"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"updated":"2026-07-06"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"qwen/qwen-mt-plus":{"name":"Qwen MT Plus","limit":{"context":16384,"output":8192},"cost":{"input":0.25,"output":0.75},"updated":"2025-07-24"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"qwen/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7},"updated":"2025-10-04"},"qwen/qwen3-omni-30b-a3b-thinking":{"name":"Qwen3 Omni 30B A3B Thinking","limit":{"context":65536,"output":16384},"cost":{"input":0.25,"output":0.97},"updated":"2025-09-22"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"updated":"2026-04-17"},"qwen/qwen3-reranker-8b":{"name":"Qwen3 Reranker 8B","limit":{"context":32768,"output":0},"cost":{"input":0.05,"output":0},"updated":"2025-06-05"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-04-22"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085},"updated":"2026-08-14"},"qwen/qwen3-embedding-8b":{"name":"Qwen3 Embedding 8B","limit":{"context":32768,"output":0},"cost":{"input":0.07,"output":0},"updated":"2025-06-05"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-03"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"updated":"2026-05-21"},"microsoft/wizardlm-2-8x22b":{"name":"WizardLM 2 8x22B","limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62},"updated":"2024-04-15"},"nousresearch/hermes-2-pro-llama-3-8b":{"name":"Hermes 2 Pro Llama 3 8B","limit":{"context":8192,"output":8192},"cost":{"input":0.14,"output":0.14},"updated":"2024-04-30"}}},"stepfun-step-plan":{"name":"StepFun Step Plan (China)","npm":"@ai-sdk/openai-compatible","models":{"step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":65536},"updated":"2026-09-20"},"step-router-v1":{"name":"Step Router v1","limit":{"context":256000,"output":256000},"updated":"2026-05-29"},"step-3.5-flash-2603":{"name":"Step 3.5 Flash 2603","limit":{"context":256000,"output":256000},"updated":"2026-04-02"},"step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":256000,"output":256000},"updated":"2026-05-29"},"step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":256000,"output":256000},"updated":"2026-02-13"}}},"bailing":{"name":"Bailing","npm":"@ai-sdk/openai-compatible","models":{"Ring-1T":{"name":"Ring-1T","limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29},"updated":"2025-10"},"Ling-1T":{"name":"Ling-1T","limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29},"updated":"2025-10"}}},"xiaomi-token-plan-cn":{"name":"Xiaomi Token Plan (China)","npm":"@ai-sdk/openai-compatible","models":{"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2.5-tts-voiceclone":{"name":"MiMo-V2.5-TTS-VoiceClone","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2-pro":{"name":"MiMo-V2-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-22"},"mimo-v2.5-tts":{"name":"MiMo-V2.5-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2.5-tts-voicedesign":{"name":"MiMo-V2.5-TTS-VoiceDesign","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-04-22"},"mimo-v2-tts":{"name":"MiMo-V2-TTS","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-03-18"}}},"tokenrouter":{"name":"TokenRouter","npm":"@ai-sdk/openai-compatible","models":{"z-ai/glm-5.3-free":{"name":"GLM-5.3 (free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-08-14"}}},"ai-router":{"name":"AI-ROUTER","npm":"@ai-sdk/openai-compatible","models":{"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"updated":"2026-07-09"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-09"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"}}},"sap-ai-core":{"name":"SAP AI Core","npm":"@jerome-benoit/sap-ai-provider-v2","models":{"sonar-deep-research":{"name":"sonar-deep-research","limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-09-01"},"anthropic--claude-4.6-opus":{"name":"anthropic--claude-4.6-opus","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"updated":"2026-09-29"},"gpt-5":{"name":"gpt-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"nvidia--llama-nemotron-embed-1b":{"name":"Llama Nemotron Embed 1B v2","limit":{"context":8192,"output":2048},"updated":"2025-10-16"},"gpt-5.6-luna":{"name":"gpt-5.6-luna","limit":{"context":1050000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1},"updated":"2026-07-09"},"anthropic--claude-4.8-opus":{"name":"anthropic--claude-4.8-opus","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"gemini-3.1-flash-lite":{"name":"gemini-3.1-flash-lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"updated":"2026-05-07"},"sonar-pro":{"name":"sonar-pro","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15},"updated":"2025-09-01"},"gpt-5.5":{"name":"gpt-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"mistralai--mistral-small":{"name":"mistralai--mistral-small","limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.28},"updated":"2026-03-16"},"text-embedding-3-large":{"name":"text-embedding-3-large","limit":{"context":8191,"output":3072},"cost":{"input":0.09,"output":0},"updated":"2024-01-25"},"gpt-4.1-mini":{"name":"gpt-4.1-mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"text-embedding-3-small":{"name":"text-embedding-3-small","limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0},"updated":"2024-01-25"},"anthropic--claude-3.7-sonnet":{"name":"anthropic--claude-3.7-sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-02-24"},"gpt-5.6-sol":{"name":"gpt-5.6-sol","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-07-09"},"amazon--nova-lite":{"name":"amazon--nova-lite","limit":{"context":1000000,"output":64000},"cost":{"input":0.3,"output":2.37},"updated":"2025-12-02"},"amazon--nova-pro":{"name":"amazon--nova-pro","limit":{"context":300000,"output":8192},"cost":{"input":0.56,"output":2.13},"updated":"2024-12-03"},"sap-abap-1":{"name":"sap-abap-1","limit":{"context":32768,"output":4096},"cost":{"input":0.48,"output":1.7},"updated":"2025-11-26"},"gpt-4.1-nano":{"name":"gpt-4.1-nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.08,"output":0.26},"updated":"2025-04-14"},"gpt-5-nano":{"name":"gpt-5-nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"anthropic--claude-3-sonnet":{"name":"anthropic--claude-3-sonnet","limit":{"context":200000,"output":4096},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2024-03-04"},"gemini-2.5-flash-lite":{"name":"gemini-2.5-flash-lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-06-17"},"anthropic--claude-4.5-sonnet":{"name":"anthropic--claude-4.5-sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"gpt-5.4":{"name":"gpt-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"gemini-2.5-flash":{"name":"gemini-2.5-flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2025-06-05"},"amazon--nova-micro":{"name":"amazon--nova-micro","limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.1},"updated":"2024-12-03"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"updated":"2026-07-21"},"gpt-5.2":{"name":"gpt-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":9.44,"cache_read":0.12},"updated":"2025-12-11"},"anthropic--claude-3-opus":{"name":"anthropic--claude-3-opus","limit":{"context":200000,"output":4096},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2024-02-29"},"gpt-5-mini":{"name":"gpt-5-mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"anthropic--claude-4-sonnet":{"name":"anthropic--claude-4-sonnet","limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"amazon--titan-embed-text":{"name":"amazon--titan-embed-text","limit":{"context":8192,"output":1536},"cost":{"input":0.14,"output":0},"updated":"2024-04-30"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"updated":"2026-07-21"},"anthropic--claude-4.7-opus":{"name":"anthropic--claude-4.7-opus","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic--claude-3.5-sonnet":{"name":"anthropic--claude-3.5-sonnet","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2024-10-22"},"mistralai--mistral-medium":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"updated":"2026-04-29"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"updated":"2026-09-22"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"updated":"2026-09-02"},"gemini-2.5-pro":{"name":"gemini-2.5-pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-06-05"},"anthropic--claude-4-opus":{"name":"anthropic--claude-4-opus","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-05-22"},"anthropic--claude-4.5-haiku":{"name":"anthropic--claude-4.5-haiku","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"nvidia--llama-3.2-nv-embedqa-1b":{"name":"nvidia--llama-3.2-nv-embedqa-1b","limit":{"context":8192,"output":4096},"cost":{"input":0.07,"output":0},"updated":"2024-09-25"},"mistralai--mistral-medium-instruct":{"name":"mistralai--mistral-medium-instruct","limit":{"context":128000,"output":128000},"cost":{"input":0.36,"output":1.22},"updated":"2025-05-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"updated":"2026-09-04"},"gemini-embedding":{"name":"Gemini Embedding 001","limit":{"context":2048,"output":1},"updated":"2025-05-20"},"cohere--command-a-reasoning":{"name":"cohere--command-a-reasoning","limit":{"context":256000,"output":32000},"cost":{"input":0.63,"output":5.05},"updated":"2025-08-21"},"anthropic--claude-4.5-opus":{"name":"anthropic--claude-4.5-opus","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"gemini-3.5-flash":{"name":"gemini-3.5-flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"gpt-5.6-terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-07-09"},"gpt-4.1":{"name":"gpt-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.32},"updated":"2025-04-14"},"anthropic--claude-4.6-sonnet":{"name":"anthropic--claude-4.6-sonnet","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"sonar":{"name":"sonar","limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1},"updated":"2025-09-01"},"anthropic--claude-3-haiku":{"name":"anthropic--claude-3-haiku","limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3},"updated":"2024-03-13"},"gemini-embedding-2":{"name":"Gemini Embedding 2","limit":{"context":8192,"output":3072},"updated":"2026-04-22"}}},"alibaba-coding-plan":{"name":"Alibaba Coding Plan","npm":"@ai-sdk/openai-compatible","models":{"MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":196608,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-12"},"qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-06-02"},"qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-03"},"qwen3-max-2026-01-23":{"name":"Qwen3 Max","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-23"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-01-27"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-12-22"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-16"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-04-02"},"glm-5":{"name":"GLM-5","limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-02-11"},"qwen3-coder-plus":{"name":"Qwen3 Coder Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-07-23"}}},"siliconflow-cn":{"name":"SiliconFlow (China)","npm":"@ai-sdk/openai-compatible","models":{"inclusionAI/Ling-flash-2.0":{"name":"inclusionAI/Ling-flash-2.0","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"PaddlePaddle/PaddleOCR-VL-1.5":{"name":"PaddlePaddle/PaddleOCR-VL-1.5","limit":{"context":16384,"output":16384},"cost":{"input":0,"output":0},"updated":"2026-01-29"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"zai-org/GLM-4.5-Air":{"name":"zai-org/GLM-4.5-Air","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86},"updated":"2025-11-25"},"stepfun-ai/Step-3.5-Flash":{"name":"stepfun-ai/Step-3.5-Flash","limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-11"},"Pro/zai-org/GLM-5.1":{"name":"Pro/zai-org/GLM-5.1","limit":{"context":205000,"output":205000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-04-08"},"Pro/zai-org/GLM-5":{"name":"Pro/zai-org/GLM-5","limit":{"context":205000,"output":205000},"cost":{"input":1,"output":3.2},"updated":"2026-02-12"},"Pro/MiniMaxAI/MiniMax-M2.5":{"name":"Pro/MiniMaxAI/MiniMax-M2.5","limit":{"context":192000,"output":131000},"cost":{"input":0.3,"output":1.22},"updated":"2026-02-13"},"Pro/moonshotai/Kimi-K2.5":{"name":"Pro/moonshotai/Kimi-K2.5","limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07},"updated":"2026-01-27"},"Pro/moonshotai/Kimi-K2.6":{"name":"Pro/moonshotai/Kimi-K2.6","limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"Pro/deepseek-ai/DeepSeek-V3.1-Terminus":{"name":"Pro/deepseek-ai/DeepSeek-V3.1-Terminus","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1},"updated":"2025-11-25"},"Pro/deepseek-ai/DeepSeek-V3":{"name":"Pro/deepseek-ai/DeepSeek-V3","limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"},"Pro/deepseek-ai/DeepSeek-V3.2":{"name":"Pro/deepseek-ai/DeepSeek-V3.2","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42},"updated":"2025-12-03"},"Pro/deepseek-ai/DeepSeek-R1":{"name":"Pro/deepseek-ai/DeepSeek-R1","limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18},"updated":"2025-11-25"},"Qwen/Qwen3-14B":{"name":"Qwen/Qwen3-14B","limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28},"updated":"2025-11-25"},"Qwen/Qwen3-32B":{"name":"Qwen/Qwen3-32B","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"Qwen/Qwen3.5-27B":{"name":"Qwen/Qwen3.5-27B","limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.09},"updated":"2026-02-25"},"Qwen/Qwen3.5-4B":{"name":"Qwen/Qwen3.5-4B","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-03"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen/Qwen3.6-35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86},"updated":"2026-04-17"},"Qwen/Qwen3-8B":{"name":"Qwen/Qwen3-8B","limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06},"updated":"2025-11-25"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen/Qwen3.5-397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.74},"updated":"2026-02-16"},"Qwen/Qwen3.5-122B-A10B":{"name":"Qwen/Qwen3.5-122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.32},"updated":"2026-02-26"},"Qwen/Qwen3.5-9B":{"name":"Qwen/Qwen3.5-9B","limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.74},"updated":"2026-03-03"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"name":"Qwen/Qwen3-235B-A22B-Thinking-2507","limit":{"context":262000,"output":262000},"cost":{"input":0.13,"output":0.6},"updated":"2025-11-25"},"Qwen/Qwen3.5-35B-A3B":{"name":"Qwen/Qwen3.5-35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86},"updated":"2026-02-25"},"Qwen/Qwen3-VL-32B-Thinking":{"name":"Qwen/Qwen3-VL-32B-Thinking","limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5},"updated":"2025-11-25"},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"name":"Qwen/Qwen3-30B-A3B-Instruct-2507","limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3},"updated":"2025-11-25"},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28},"updated":"2025-11-25"},"Qwen/Qwen3-VL-32B-Instruct":{"name":"Qwen/Qwen3-VL-32B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6},"updated":"2025-11-25"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen/Qwen3-VL-30B-A3B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1},"updated":"2025-11-25"},"Qwen/Qwen2.5-72B-Instruct":{"name":"Qwen/Qwen2.5-72B-Instruct","limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59},"updated":"2025-11-25"},"Qwen/Qwen2.5-7B-Instruct":{"name":"Qwen/Qwen2.5-7B-Instruct","limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05},"updated":"2025-11-25"},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"name":"Qwen/Qwen3-VL-30B-A3B-Thinking","limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1},"updated":"2025-11-25"},"Qwen/Qwen3-VL-8B-Instruct":{"name":"Qwen/Qwen3-VL-8B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68},"updated":"2025-11-25"},"ByteDance-Seed/Seed-OSS-36B-Instruct":{"name":"ByteDance-Seed/Seed-OSS-36B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57},"updated":"2025-11-25"},"tencent/Hunyuan-A13B-Instruct":{"name":"tencent/Hunyuan-A13B-Instruct","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V3.1-Terminus":{"name":"deepseek-ai/DeepSeek-V3.1-Terminus","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-OCR":{"name":"deepseek-ai/DeepSeek-OCR","limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0},"updated":"2025-10-20"},"deepseek-ai/DeepSeek-V3.2":{"name":"deepseek-ai/DeepSeek-V3.2","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42},"updated":"2025-12-03"},"deepseek-ai/DeepSeek-R1":{"name":"deepseek-ai/DeepSeek-R1","limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"deepseek-ai/DeepSeek-V4-Pro","limit":{"context":1049000,"output":393000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.003},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V3":{"name":"deepseek-ai/DeepSeek-V3","limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"}}},"opencode":{"name":"OpenCode","npm":"@ai-sdk/openai-compatible","models":{"nemotron-3.5-lightning-free":{"name":"Nemotron 3.5 Lightning Free","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-11"},"hy3-free":{"name":"Hy3 Free","limit":{"context":190000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-06"},"ling-3.0-flash-free":{"name":"Ling-3.0-flash Free","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-23"},"mimo-v2-flash-free":{"name":"MiMo V2 Flash Free","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2025-12-16"},"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.07,"output":8.5,"cache_read":0.107},"updated":"2025-08-07"},"ling-2.6-flash-free":{"name":"Ling 2.6 Flash Free","limit":{"context":262100,"output":32800},"cost":{"input":0,"output":0},"updated":"2026-04-21"},"trinity-large-preview-free":{"name":"Trinity Large Preview","limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-01-28"},"claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"x-preview-f-free":{"name":"Ox Alpha Free (Unlimited)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-21"},"gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"nemotron-3.5-super-vl-free":{"name":"Nemotron 3.5 Super VL Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-15"},"claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"ling-3.0-flash-fin-free":{"name":"Ling 3.0 Flash Fin Free","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-03"},"muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"mimo-v2-pro-free":{"name":"MiMo V2 Pro Free","limit":{"context":1048576,"output":64000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"qwen3.6-plus-free":{"name":"Qwen3.6 Plus Free","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-02"},"kimi-k2.5-free":{"name":"Kimi K2.5 Free","limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-01-27"},"glm-5-free":{"name":"GLM-5 Free","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-02-11"},"gemini-3-flash":{"name":"Gemini 3 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"updated":"2025-12-17"},"claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"qwen3-coder":{"name":"Qwen3 Coder","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":1.8},"updated":"2025-07-23"},"gpt-5-codex":{"name":"GPT-5 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.07,"output":8.5,"cache_read":0.107},"updated":"2025-09-15"},"grok-code":{"name":"Grok Code Fast 1","limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-08-20"},"claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-02-17"},"exo-free":{"name":"Exo Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-06"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2.5,"cache_read":0.4},"updated":"2025-09-05"},"mimo-v2.6-flash-free":{"name":"MiMo-V2.6-Flash Free","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-22"},"ling-3.1-flash-free":{"name":"Ling 3.1 Flash Free","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-29"},"step-5-preview-free":{"name":"Step 5 Preview Free","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-20"},"claude-sonnet-4":{"name":"Claude Sonnet 4","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-05-22"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3,"cache_read":0.08},"updated":"2026-01-27"},"deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.84,"cache_read":0.145},"updated":"2026-04-24"},"grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"claude-3-5-haiku":{"name":"Claude Haiku 3.5","limit":{"context":200000,"output":8192},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1},"updated":"2024-10-22"},"gemini-3-pro":{"name":"Gemini 3 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2025-11-18"},"claude-haiku-4-5":{"name":"Claude Haiku 4.5","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.1},"updated":"2025-12-22"},"deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-09-01"},"longcat-2.5-preview-free":{"name":"LongCat 2.5 Preview Free","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-25"},"space-bunny-free":{"name":"Space Bunny Free","limit":{"context":1048576,"output":524288},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2026-09-23"},"kimi-k2":{"name":"Kimi K2","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2.5,"cache_read":0.4},"updated":"2025-09-05"},"gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"ring-2.6-1t-free":{"name":"Ring 2.6 1T Free","limit":{"context":262000,"output":66000},"cost":{"input":0,"output":0},"updated":"2026-05-08"},"gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"glm-5.1":{"name":"GLM-5.1","limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"big-pickle":{"name":"Big Pickle","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"updated":"2025-10-17"},"gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"cache_read":30},"updated":"2026-04-24"},"ll-alpha-free":{"name":"LL Alpha Free","limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-15"},"gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"updated":"2026-07-21"},"nemotron-3-ultra-free":{"name":"Nemotron 3 Ultra Free","limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-04"},"gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"cat-jam-free":{"name":"Cat Jam Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-12"},"gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-08-13"},"mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"longcat-2.0-free":{"name":"LongCat-2.0 Free","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-06-30"},"deepseek-v4-flash-free":{"name":"DeepSeek V4 Flash Free","limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-31"},"nemotron-3-super-free":{"name":"Nemotron 3 Super Free","limit":{"context":204800,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-11"},"glm-4.7-free":{"name":"GLM-4.7 Free","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2025-12-22"},"hy3-preview-free":{"name":"Hy3 preview Free","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-20"},"minimax-m3.1-flash-free":{"name":"MiniMax M3.1 Flash Free","limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-19"},"kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"gpt-5.3-codex-spark":{"name":"GPT-5.3 Codex Spark","limit":{"context":128000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-12"},"claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-28"},"gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-24"},"gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-07-21"},"minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.1},"updated":"2025-12-23"},"claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.1},"updated":"2025-09-30"},"claude-sonnet-4-5":{"name":"Claude Sonnet 4.5","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"updated":"2026-07-31"},"minimax-m2.1-free":{"name":"MiniMax-M2.1 Free","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2025-12-23"},"qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen3.5-plus":{"name":"Qwen3.5 Plus","limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-02-16"},"mimo-v2-omni-free":{"name":"MiMo V2 Omni Free","limit":{"context":262144,"output":64000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-03-18"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":262144,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"updated":"2026-04-02"},"claude-opus-4-1":{"name":"Claude Opus 4.1","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-09-02"},"gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"glm-5.3-flash-free":{"name":"GLM-5.3-Flash Free","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-26"},"gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.07,"output":8.5,"cache_read":0.107},"updated":"2025-11-13"},"claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"beam-free":{"name":"Beam Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-10-16"},"ling-3.0-tiny-free":{"name":"Ling-3.0-tiny Free","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-08-06"},"grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.07,"output":8.5,"cache_read":0.107},"updated":"2025-11-13"},"gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"gemini-3.1-pro":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"updated":"2026-02-19"},"glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-11"},"gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"updated":"2026-05-19"},"gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"updated":"2026-07-09"},"north-mini-code-free":{"name":"North Mini Code Free","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-06-09"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"minimax-m2.5-free":{"name":"MiniMax-M2.5 Free","limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-02-12"},"minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-02-12"},"laguna-s-2.1-free":{"name":"Laguna S 2.1 Free","limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-07-21"},"muse-spark-1.2-contributor-free":{"name":"Muse Spark 1.2 Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-08-05"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":512000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"fledge-alpha-free":{"name":"Fledge Alpha Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-01"},"gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"cache_read":30},"updated":"2026-03-05"},"mimo-v2.5-free":{"name":"MiMo V2.5 Free","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-04-24"},"gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-01-14"},"deepseek-v4.1-flash-free":{"name":"DeepSeek V4.1 Flash Free","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-10"},"muse-spark-1.3-contributor-free":{"name":"Muse Spark 1.3 Free","limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-09-02"},"gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":10,"cache_read":0.1},"updated":"2026-10-13"},"claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"claude-opus-4-5":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"minimax-m3-free":{"name":"MiniMax-M3 Free","limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"updated":"2026-05-31"}}},"aimlapi":{"name":"AI/ML API","npm":"@ai-sdk/openai-compatible","models":{"thedrummer/cydonia-24b-v4.1":{"name":"Cydonia 24B V4.1","limit":{"context":131072,"output":131072},"cost":{"input":0.41262,"output":0.6877,"cache_read":0.20631},"updated":"2025-09-27"},"thedrummer/skyfall-36b-v2":{"name":"Skyfall 36B V2","limit":{"context":32768,"output":32768},"cost":{"input":0.75647,"output":1.10032,"cache_read":0.34385},"updated":"2025-03-10"},"thedrummer/unslopnemo-12b":{"name":"UnslopNemo 12B","limit":{"context":32768,"output":32768},"cost":{"input":0.55016,"output":0.55016},"updated":"2024-11-08"},"sakana/fugu-ultra-v2":{"name":"Fugu Ultra v2","limit":{"context":1000000,"output":128000},"cost":{"input":6.877,"output":41.262,"cache_read":0.6877},"updated":"2026-09-11"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":128000},"cost":{"input":6.877,"output":41.262,"cache_read":0.6877},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":128000},"cost":{"input":2.7508,"output":8.2524,"cache_read":0.34385},"updated":"2026-09-11"},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"name":"Llama 3.3 70B Instruct Turbo","limit":{"context":128000,"output":127000},"cost":{"input":1.352,"output":1.352},"updated":"2024-12-06"},"anthracite-org/magnum-v4-72b":{"name":"Magnum v4 72B","limit":{"context":32000,"output":16384},"cost":{"input":4.1262,"output":6.877},"updated":"2024-10-22"},"cohere/command-r7b-12-2024":{"name":"Command R7B (12-2024)","limit":{"context":128000,"output":4000},"cost":{"input":0.051578,"output":0.20631},"updated":"2024-12-02"},"cohere/command-r-08-2024":{"name":"Command R (08-2024)","limit":{"context":128000,"output":4000},"cost":{"input":0.20631,"output":0.82524},"updated":"2024-08-30"},"cohere/command-a":{"name":"Command A","limit":{"context":256000,"output":256000},"cost":{"input":3.4385,"output":13.754},"updated":"2025-03-13"},"cohere/command-r-plus-08-2024":{"name":"Command R+ (08-2024)","limit":{"context":128000,"output":4000},"cost":{"input":3.4385,"output":13.754},"updated":"2024-08-30"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1000000,"output":64000},"cost":{"input":1.3754,"output":3.71358,"cache_read":0.06877},"updated":"2026-09-20"},"zhipu/glm-5.3":{"name":"GLM 5.3","limit":{"context":1024000,"output":131072},"cost":{"input":1.82,"output":5.72,"cache_read":0.338},"updated":"2026-08-14"},"zhipu/glm-5.2":{"name":"GLM 5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.82,"output":5.72,"cache_read":0.338},"updated":"2026-06-13"},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"name":"Venice Uncensored","limit":{"context":128000,"output":8192},"cost":{"input":0.27508,"output":1.23786},"updated":"2025-07-09"},"inference-net/schematron-v2-small":{"name":"Schematron V2 Small","limit":{"context":128000,"output":4096},"cost":{"input":0.06877,"output":0.316342},"updated":"2026-09-12"},"inference-net/schematron-v2-turbo":{"name":"Schematron V2 Turbo","limit":{"context":128000,"output":8192},"cost":{"input":0.041262,"output":0.20631},"updated":"2026-09-12"},"openai/o1":{"name":"o1","limit":{"context":128000,"output":100000},"cost":{"input":19.5,"output":78,"cache_read":9.75},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":3.25,"output":13,"cache_read":1.625},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.13},"updated":"2026-09-29"},"openai/gpt-5.6-terra-pro":{"name":"GPT-5.6 Terra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2.7508,"output":16.5048,"cache_read":0.27508},"updated":"2026-07-09"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.625,"output":13,"cache_read":0.1625},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":13,"output":39},"updated":"2024-04-09"},"openai/gpt-5.6-sol-pro":{"name":"GPT-5.6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":5.5016,"output":27.508,"cache_read":0.55016},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 Mini","limit":{"context":400000,"output":128000},"cost":{"input":2.0631,"output":12.3786,"cache_read":0.20631},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.26,"output":1.56,"cache_read":0.026},"updated":"2026-07-09"},"openai/gpt-5-4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":3.25,"output":19.5,"cache_read":0.325},"updated":"2026-03-05"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 Mini","limit":{"context":1000000,"output":32768},"cost":{"input":0.52,"output":2.08,"cache_read":0.13},"updated":"2025-04-14"},"openai/gpt-5-1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.625,"output":13,"cache_read":0.1625},"updated":"2025-11-13"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":5.2,"output":26,"cache_read":0.52},"updated":"2026-07-09"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":3.25,"output":13,"cache_read":1.625},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 Nano","limit":{"context":1000000,"output":32768},"cost":{"input":0.13,"output":0.52,"cache_read":0.0325},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.065,"output":0.52,"cache_read":0.0065},"updated":"2025-08-07"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":28.8834,"output":231.0672},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":20.631,"output":165.048},"updated":"2025-10-06"},"openai/gpt-5.4-image-2":{"name":"GPT-5.4 Image 2","limit":{"context":272000,"output":128000},"cost":{"input":11.0032,"output":20.631,"cache_read":2.7508},"updated":"2026-04-21"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5 Turbo","limit":{"context":16000,"output":4096},"cost":{"input":0.65,"output":1.95},"updated":"2023-11-06"},"openai/gpt-5.1-codex-max":{"name":"GPT-5.1-Codex-Max","limit":{"context":400000,"output":128000},"cost":{"input":3.4385,"output":27.508,"cache_read":0.34385},"updated":"2025-11-13"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":41.262,"output":247.572},"updated":"2026-04-23"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131000,"output":117964},"cost":{"input":0.103155,"output":0.41262,"cache_read":0.051578},"updated":"2025-08-05"},"openai/o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":206.31,"output":825.24},"updated":"2025-03-19"},"openai/gpt-5-5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":6.5,"output":39,"cache_read":0.65},"updated":"2026-04-23"},"openai/gpt-4o-mini":{"name":"GPT-4o Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.195,"output":0.78,"cache_read":0.0975},"updated":"2024-07-18"},"openai/gpt-5.6-luna-pro":{"name":"GPT-5.6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.27508,"output":1.65048,"cache_read":0.027508},"updated":"2026-07-09"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.325,"output":2.6,"cache_read":0.0325},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":4.8139,"output":38.5112,"cache_read":0.48139},"updated":"2026-02-05"},"openai/gpt-5-2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":2.275,"output":18.2,"cache_read":0.2275},"updated":"2025-12-11"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.13,"output":0.65,"cache_read":0.013},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3 Mini","limit":{"context":200000,"output":100000},"cost":{"input":1.43,"output":5.72,"cache_read":0.715},"updated":"2025-01-29"},"openai/gpt-4o-2024-05-13":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":6.5,"output":19.5},"updated":"2024-05-13"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8000,"output":8192},"cost":{"input":39,"output":78,"cache_read":39},"updated":"2024-04-09"},"openai/o3-pro":{"name":"o3 Pro","limit":{"context":200000,"output":100000},"cost":{"input":27.508,"output":110.032},"updated":"2025-06-10"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":3.25,"output":13,"cache_read":1.625},"updated":"2024-08-06"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131000,"output":117964},"cost":{"input":0.48139,"output":1.30663,"cache_read":0.48139},"updated":"2025-08-05"},"openai/gpt-oss-safeguard-20b":{"name":"gpt-oss-safeguard-20b","limit":{"context":131072,"output":65536},"cost":{"input":0.103155,"output":0.41262,"cache_read":0.051578},"updated":"2025-10-29"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":13,"output":65,"cache_read":1.3},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.27508,"output":1.71925,"cache_read":0.027508},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2.6,"output":15.6,"cache_read":0.26},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2.6,"output":10.4,"cache_read":0.65},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":41.262,"output":247.572},"updated":"2026-03-05"},"relace/relace-search":{"name":"Search","limit":{"context":256000,"output":128000},"cost":{"input":1.3754,"output":4.1262},"updated":"2025-12-08"},"relace/relace-apply-3":{"name":"Apply 3","limit":{"context":256000,"output":128000},"cost":{"input":1.16909,"output":1.71925},"updated":"2025-09-26"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.71925,"output":5.84545,"cache_read":0.20631},"updated":"2026-08-05"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.71925,"output":5.84545,"cache_read":0.20631},"updated":"2026-09-02"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":131072},"cost":{"input":1.71925,"output":5.84545,"cache_read":0.20631},"updated":"2026-07-09"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":131072},"cost":{"input":0.48139,"output":2.0631,"cache_read":0.055016},"updated":"2026-08-10"},"x-ai/grok-4-fast-non-reasoning":{"name":"Grok 4 Fast Non-Reasoning","limit":{"context":2000000,"output":1999000},"cost":{"input":1.625,"output":3.25,"cache_read":0.26},"updated":"2025-12-18"},"x-ai/grok-4-20-0309-non-reasoning":{"name":"Grok 4.20 Non-Reasoning","limit":{"context":2000000,"output":1999000},"cost":{"input":1.625,"output":3.25,"cache_read":0.26},"updated":"2026-03-09"},"bytedance-seed/seed-2.0-mini":{"name":"Seed-2.0-Mini","limit":{"context":262144,"output":131072},"cost":{"input":0.13754,"output":0.55016},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-code":{"name":"Seed-2.0-Code","limit":{"context":262144,"output":131072},"cost":{"input":0.6877,"output":4.1262},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-lite":{"name":"Seed-2.0-Lite","limit":{"context":262144,"output":131072},"cost":{"input":0.34385,"output":2.7508},"updated":"2026-02-14"},"bytedance-seed/seed-1.6-flash":{"name":"Seed 1.6 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.103155,"output":0.41262},"updated":"2025-08-28"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.17,"output":3.51,"cache_read":0.039},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.39,"output":1.56,"cache_read":0.0078},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":384000},"cost":{"input":0.572,"output":1.716,"cache_read":0.0182},"updated":"2026-09-01"},"deepseek/deepseek-chat-v3-0324":{"name":"DeepSeek V3","limit":{"context":128000,"output":124000},"cost":{"input":0.398866,"output":1.567956,"cache_read":0.192556},"updated":"2025-03-24"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.39,"output":1.56,"cache_read":0.0078},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":2.393196,"output":4.786392,"cache_read":0.199433},"updated":"2026-08-22"},"deepseek/deepseek-chat":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.39,"output":1.56,"cache_read":0.0078},"updated":"2026-04-24"},"sao10k/l3.3-euryale-70b":{"name":"Llama 3.3 Euryale 70B","limit":{"context":131072,"output":16384},"cost":{"input":0.89401,"output":1.03155},"updated":"2024-12-18"},"sao10k/l3.1-euryale-70b":{"name":"Llama 3.1 Euryale 70B v2.2","limit":{"context":131072,"output":16384},"cost":{"input":1.99488,"output":1.99488},"updated":"2024-08-28"},"sao10k/l3-lunaris-8b":{"name":"Llama 3 8B Lunaris","limit":{"context":8192,"output":7372},"cost":{"input":0.06877,"output":0.06877},"updated":"2024-08-13"},"unbiased/pareto":{"name":"Pareto","limit":{"context":262144,"output":131072},"cost":{"input":3.4385,"output":10.3155,"cache_read":0.34385},"updated":"2026-09-17"},"aion-labs/aion-rp-llama-3.1-8b":{"name":"Aion-RP 1.0 (8B)","limit":{"context":32768,"output":32768},"cost":{"input":1.10032,"output":2.20064},"updated":"2025-02-04"},"amazon/nova-lite-v1":{"name":"Nova Lite 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.082524,"output":0.330096},"updated":"2024-12-05"},"amazon/nova-micro-v1":{"name":"Nova Micro 1.0","limit":{"context":128000,"output":5120},"cost":{"input":0.048139,"output":0.192556},"updated":"2024-12-05"},"amazon/nova-pro-v1":{"name":"Nova Pro 1.0","limit":{"context":300000,"output":5120},"cost":{"input":1.10032,"output":4.40128},"updated":"2024-12-05"},"inception/mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.34385,"output":1.03155,"cache_read":0.034385},"updated":"2026-03-04"},"inception/mercury-2.5":{"name":"Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.27508,"output":1.03155,"cache_read":0.027508},"updated":"2026-09-08"},"perplexity/sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":100000},"cost":{"input":3.9,"output":19.5},"updated":"2025-09-01"},"perplexity/sonar":{"name":"Sonar","limit":{"context":128000,"output":100000},"cost":{"input":1.3,"output":1.3},"updated":"2025-09-01"},"gryphe/mythomax-l2-13b":{"name":"MythoMax 13B","limit":{"context":4096,"output":4096},"cost":{"input":2.578875,"output":2.578875,"cache_read":2.578875},"updated":"2023-08-10"},"alibaba/qwen3-coder-480b-a35b-instruct":{"name":"Qwen3 Coder","limit":{"context":262000,"output":65536},"cost":{"input":1.3754,"output":6.705075,"cache_read":1.3754},"updated":"2025-04"},"alibaba/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.208,"output":0.611,"cache_read":0.0208},"updated":"2026-08-26"},"alibaba/qwen-plus":{"name":"Qwen Plus","limit":{"context":131000,"output":16384},"cost":{"input":0.52,"output":1.56,"cache_read":0.104},"updated":"2025-09-11"},"alibaba/qwen3-next-80b-a3b-instruct":{"name":"Qwen3 Next 80B A3B Instruct","limit":{"context":129024,"output":16384},"cost":{"input":0.20631,"output":1.65048},"updated":"2025-09"},"alibaba/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":262144,"output":52429},"cost":{"input":3.4385,"output":8.59625,"cache_read":0.6877},"updated":"2026-08-12"},"alibaba/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":262144,"output":131072},"cost":{"input":0.61893,"output":4.40128},"updated":"2026-08-14"},"alibaba/qwen3.8-max-prime":{"name":"Qwen3.8 Max Prime","limit":{"context":1000000,"output":131072},"cost":{"input":5.5016,"output":16.5048,"cache_read":0.6877},"updated":"2026-09-23"},"alibaba/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2.6,"output":7.8,"cache_read":0.325},"updated":"2026-08-03"},"alibaba/qwen-max":{"name":"Qwen Max","limit":{"context":32000,"output":8192},"cost":{"input":2.08,"output":8.32,"cache_read":0.416},"updated":"2025-01-25"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":98304},"cost":{"input":0.82524,"output":3.4385,"cache_read":0.20631},"updated":"2025-11-06"},"moonshotai/kimi-k2":{"name":"Kimi K2 0711","limit":{"context":131072,"output":98304},"cost":{"input":0.783978,"output":3.16342},"updated":"2025-07-11"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 0905","limit":{"context":262144,"output":98304},"cost":{"input":1.3754,"output":4.1262},"updated":"2025-09-05"},"anthropic/claude-sonnet-4.5":{"name":"Claude 4.5 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":4.1262,"output":20.631,"cache_read":0.41262},"updated":"2025-09-29"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":13,"output":65,"cache_read":1.3},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.13,"output":0.65,"cache_read":0.013},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":6.5,"output":32.5,"cache_read":0.65},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude 4.5 Opus","limit":{"context":200000,"output":64000},"cost":{"input":6.877,"output":34.385,"cache_read":0.6877},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude 4.7 Opus","limit":{"context":1000000,"output":128000},"cost":{"input":6.877,"output":34.385,"cache_read":0.6877},"updated":"2026-04-16"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":13,"output":65,"cache_read":0.325},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude 4.6 Sonnet","limit":{"context":200000,"output":64000},"cost":{"input":4.1262,"output":20.631,"cache_read":0.41262},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude 4.5 Haiku","limit":{"context":200000,"output":64000},"cost":{"input":1.3754,"output":6.877,"cache_read":0.13754},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":5.2,"output":26,"cache_read":0.26},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude 4.8 Opus","limit":{"context":1000000,"output":128000},"cost":{"input":6.877,"output":34.385,"cache_read":0.6877},"updated":"2026-05-28"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo V2.5 Pro","limit":{"context":1000000,"output":128000},"cost":{"input":0.598299,"output":1.196598,"cache_read":0.004951},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo V2.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.192556,"output":0.385112,"cache_read":0.003851},"updated":"2026-04-22"},"mancer/weaver":{"name":"Weaver (alpha)","limit":{"context":8000,"output":2000},"cost":{"input":1.03155,"output":1.3754},"updated":"2023-08-02"},"google/gemini-3-8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.975,"output":4.875,"cache_read":0.0975},"updated":"2026-09-02"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B","limit":{"context":128000,"output":117964},"cost":{"input":0.20631,"output":0.632684,"cache_read":0.103155},"updated":"2025-03-12"},"google/gemma-2-27b-it":{"name":"Gemma 2 27B","limit":{"context":8192,"output":2048},"cost":{"input":0.89401,"output":0.89401},"updated":"2024-07-13"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":2.0631,"output":12.3786,"cache_read":0.20631},"updated":"2026-08-13"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":128000},"cost":{"input":0.20631,"output":0.82524,"cache_read":0.20631},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B","limit":{"context":131000,"output":32768},"cost":{"input":0.06877,"output":0.13754,"cache_read":0.055016},"updated":"2025-03-12"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1000000,"output":65536},"cost":{"input":0.34385,"output":2.0631,"cache_read":0.034385},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1000000,"output":65536},"cost":{"input":2.6,"output":15.6,"cache_read":0.65},"updated":"2026-02-19"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.975,"output":4.875,"cache_read":0.0975},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048756,"output":65536},"cost":{"input":2.7508,"output":16.5048,"cache_read":0.27508},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B Instruct","limit":{"context":256000,"output":16384},"cost":{"input":1.361646,"output":2.049346,"cache_read":1.361646},"updated":"2026-04-02"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.95,"output":9.75,"cache_read":0.195},"updated":"2026-07-21"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.975,"output":4.875,"cache_read":0.0975},"updated":"2026-09-02"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B","limit":{"context":131000,"output":96000},"cost":{"input":0.06877,"output":0.20631,"cache_read":0.055016},"updated":"2025-03-12"},"morph/morph-v3-fast":{"name":"V3 Fast","limit":{"context":81920,"output":38000},"cost":{"input":1.10032,"output":1.65048},"updated":"2025-07-07"},"morph/morph-v3-large":{"name":"V3 Large","limit":{"context":262144,"output":131072},"cost":{"input":1.23786,"output":2.61326},"updated":"2025-07-07"},"moonshot/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3.9,"output":19.5,"cache_read":0.39},"updated":"2026-07-16"},"upstage/solar-pro-3":{"name":"Solar Pro 3","limit":{"context":128000,"output":8192},"cost":{"input":0.20631,"output":0.82524,"cache_read":0.020631},"updated":"2026-01"},"upstage/solar-pro4":{"name":"Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.041262,"output":0.165048,"cache_read":0.008252},"updated":"2026-08-06"},"undi95/remm-slerp-l2-13b":{"name":"ReMM SLERP 13B","limit":{"context":6144,"output":4096},"cost":{"input":0.6877,"output":1.03155},"updated":"2023-07-22"},"ibm-granite/granite-4.0-h-micro":{"name":"Granite 4.0 Micro","limit":{"context":131000,"output":131000},"cost":{"input":0.023382,"output":0.154045},"updated":"2025-10-02"},"z-ai/glm-5.3-flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.195,"output":0.65,"cache_read":0.039},"updated":"2026-08-26"},"z-ai/glm-5v-turbo":{"name":"GLM 5V Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.56,"output":5.2,"cache_read":0.312},"updated":"2026-04-01"},"z-ai/glm-4.6v":{"name":"GLM 4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.41262,"output":1.23786,"cache_read":0.075647},"updated":"2025-12-08"},"z-ai/glm-5-turbo":{"name":"GLM 5 Turbo","limit":{"context":262144,"output":131072},"cost":{"input":1.56,"output":5.2,"cache_read":0.312},"updated":"2026-03-16"},"z-ai/glm-4.5v":{"name":"GLM 4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.82524,"output":2.47572,"cache_read":0.151294},"updated":"2025-08-11"},"z-ai/glm-4.7-flash":{"name":"GLM 4.7 Flash","limit":{"context":202752,"output":16384},"cost":{"input":0.171925,"output":0.6877,"cache_read":0.013754},"updated":"2026-01-19"},"rekaai/reka-edge":{"name":"Reka Edge","limit":{"context":16384,"output":16384},"cost":{"input":0.13754,"output":0.13754},"updated":"2026-03-20"},"tencent/hy-mt2-1.8b":{"name":"Hy-MT2-1.8B","limit":{"context":8192,"output":4096},"cost":{"input":0.060518,"output":0.243446},"updated":"2026-08-20"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1048576,"output":64000},"cost":{"input":1.147084,"output":3.439875,"cache_read":0.057767},"updated":"2026-08-28"},"tencent/hy-mt2-7b":{"name":"Hy-MT2-7B","limit":{"context":8192,"output":4096},"cost":{"input":0.10178,"output":0.405743},"updated":"2026-08-19"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":131072},"cost":{"input":0.27508,"output":1.10032,"cache_read":0.06877},"updated":"2026-07-06"},"tencent/hy-mt2-30b-a3b":{"name":"Hy-MT2-30B-A3B","limit":{"context":8192,"output":4096},"cost":{"input":0.10178,"output":0.405743},"updated":"2026-08-20"},"mistralai/ministral-8b-2512":{"name":"Ministral 3 8B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.41262,"output":0.41262,"cache_read":0.020631},"updated":"2025-12-02"},"mistralai/ministral-14b-2512":{"name":"Ministral 3 14B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.48139,"output":0.48139,"cache_read":0.027508},"updated":"2025-12-02"},"mistralai/mixtral-8x22b-instruct":{"name":"Mixtral 8x22B Instruct","limit":{"context":65536,"output":52428},"cost":{"input":2.7508,"output":8.2524,"cache_read":0.27508},"updated":"2024-04-17"},"mistralai/mistral-small-3.1-24b-instruct":{"name":"Small 3.1 24B","limit":{"context":128000,"output":128000},"cost":{"input":0.482765,"output":0.763347},"updated":"2025-03-17"},"mistralai/mistral-nemo":{"name":"Mistral NeMo","limit":{"context":128000,"output":16384},"cost":{"input":0.20631,"output":0.233818,"cache_read":0.20631},"updated":"2024-07-01"},"mistralai/voxtral-small-24b-2507":{"name":"Voxtral Small 24B 2507","limit":{"context":32000,"output":32768},"cost":{"input":0.13754,"output":0.41262,"cache_read":0.013754},"updated":"2025-07-15"},"mistralai/mistral-saba":{"name":"Saba","limit":{"context":32768,"output":26214},"cost":{"input":0.27508,"output":0.82524,"cache_read":0.027508},"updated":"2025-02-17"},"mistralai/ministral-3b-2512":{"name":"Ministral 3 3B 2512","limit":{"context":131072,"output":104857},"cost":{"input":0.20631,"output":0.20631,"cache_read":0.013754},"updated":"2025-12-02"},"mistralai/mistral-small-24b-instruct-2501":{"name":"Small 3","limit":{"context":32768,"output":16384},"cost":{"input":0.06877,"output":0.110032},"updated":"2025-01-30"},"mistralai/mistral-small-2603":{"name":"Small 4","limit":{"context":262144,"output":256000},"cost":{"input":0.257888,"output":1.03155,"cache_read":0.020631},"updated":"2026-03-16"},"mistralai/codestral-2508":{"name":"Codestral 2508","limit":{"context":256000,"output":8192},"cost":{"input":0.41262,"output":1.23786,"cache_read":0.041262},"updated":"2025-07-30"},"mistralai/mistral-small-3.2-24b-instruct":{"name":"Small 3.2 24B","limit":{"context":128000,"output":16384},"cost":{"input":0.103155,"output":0.27508},"updated":"2025-06-20"},"mistralai/mistral-large":{"name":"Large","limit":{"context":128000,"output":102400},"cost":{"input":2.7508,"output":8.2524,"cache_read":0.27508},"updated":"2024-02-26"},"mistralai/devstral-2512":{"name":"Devstral 2 2512","limit":{"context":262144,"output":262144},"cost":{"input":0.605176,"output":3.02588,"cache_read":0.060518},"updated":"2025-12-09"},"mistralai/mistral-medium-3-5":{"name":"Medium 3.5","limit":{"context":262144,"output":209715},"cost":{"input":2.0631,"output":10.3155},"updated":"2026-04-30"},"mistralai/mistral-medium-3.1":{"name":"Medium 3.1","limit":{"context":131072,"output":104857},"cost":{"input":0.55016,"output":2.7508,"cache_read":0.055016},"updated":"2025-08-13"},"mistralai/mistral-medium-3":{"name":"Medium 3","limit":{"context":131072,"output":104857},"cost":{"input":0.55016,"output":2.7508,"cache_read":0.055016},"updated":"2025-05-07"},"mistralai/mistral-large-2407":{"name":"Large 2407","limit":{"context":131072,"output":104857},"cost":{"input":2.7508,"output":8.2524,"cache_read":0.27508},"updated":"2024-11-19"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":1048576,"output":1048576},"cost":{"input":1.3754,"output":5.57037,"cache_read":0.233818},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":524288,"output":262144},"cost":{"input":0.797732,"output":1.980576,"cache_read":0.159546},"updated":"2026-07-30"},"nousresearch/hermes-3-llama-3.1-70b":{"name":"Hermes 3 70B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.96278,"output":0.96278},"updated":"2024-08-18"},"nousresearch/hermes-3-llama-3.1-405b":{"name":"Hermes 3 405B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":1.3754,"output":1.3754},"updated":"2024-08-16"}}},"boundless":{"name":"Boundless","npm":"@ai-sdk/openai-compatible","models":{"glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.12,"output":0.4,"cache_read":0.024},"updated":"2026-08-26"},"gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":262144,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"updated":"2026-07-09"},"qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.12,"output":3.52,"cache_read":0.14},"updated":"2026-08-14"},"mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"claude-opus-5":{"name":"Claude Opus 5","limit":{"context":262144,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"updated":"2026-07-24"},"nemotron3-super":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.52,"cache_read":0.06},"updated":"2026-03-11"},"gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":262144,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"updated":"2026-07-09"},"deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":1,"cache_read":0.01},"updated":"2026-09-10"},"glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":0.34,"output":2.3,"cache_read":0.17},"updated":"2026-06-13"},"claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":262144,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25},"updated":"2026-09-01"},"dsv4":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.04,"output":0.21,"cache_read":0.02},"updated":"2026-07-31"},"mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-09-22"},"qwen3.6":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.04,"output":0.35,"cache_read":0.02},"updated":"2026-04-17"},"gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01},"updated":"2026-09-22"},"kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":2.3,"output":11.4,"cache_read":0.23},"updated":"2026-07-16"},"deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":1.04,"output":2.08,"cache_read":0.0352},"updated":"2026-08-22"},"gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"updated":"2026-09-22"},"minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.056},"updated":"2026-06-01"}}},"lowrouter":{"name":"LowRouter","npm":"@ai-sdk/openai-compatible","models":{"auto/openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"auto/openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"auto/openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"auto/openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"auto/openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"auto/openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"auto/openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"auto/openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"auto/openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"auto/openai/gpt-oss-safeguard-120b":{"name":"GPT OSS Safeguard 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.18,"output":0.73},"updated":"2025-10-29"},"auto/openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"auto/openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.113,"output":0.4745},"updated":"2025-08-05"},"auto/openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"auto/openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"auto/openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"auto/openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"auto/openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.1695,"output":0.6779},"updated":"2025-08-05"},"auto/openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.24},"updated":"2025-10-29"},"auto/openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"auto/openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"auto/openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"auto/openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"auto/openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"auto/mistralai/ministral-8b-2512":{"name":"Ministral 3 8B","limit":{"context":262144,"output":262144},"cost":{"input":0.1569,"output":0.1569,"cache_read":0.0157},"updated":"2025-12-02"},"auto/mistralai/ministral-14b-2512":{"name":"Ministral 3 14B","limit":{"context":262144,"output":262144},"cost":{"input":0.2092,"output":0.2092,"cache_read":0.0209},"updated":"2025-12-02"},"auto/mistralai/ministral-3b-2512":{"name":"Ministral 3 3B","limit":{"context":262144,"output":262144},"cost":{"input":0.1046,"output":0.1046,"cache_read":0.0105},"updated":"2025-12-02"},"auto/mistralai/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":256000,"output":256000},"cost":{"input":0.1569,"output":0.6275,"cache_read":0.0157},"updated":"2026-03-16"},"auto/mistralai/codestral-2508":{"name":"Codestral 25.08","limit":{"context":128000,"output":8192},"cost":{"input":0.3138,"output":0.9413,"cache_read":0.0314},"updated":"2025-07-30"},"auto/mistralai/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5229,"output":1.5688,"cache_read":0.0523},"updated":"2025-12-02"},"auto/mistralai/mistral-large-4":{"name":"Mistral Large 4","limit":{"context":524288,"output":262144},"cost":{"input":0.7112,"output":2.1859,"cache_read":0.0732},"updated":"2026-10-06"},"auto/mistralai/mistral-medium-3.5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.5688,"output":7.8442,"cache_read":0.1569},"updated":"2026-04-29"}}},"lucidquery":{"name":"LucidQuery","npm":"@ai-sdk/openai-compatible","models":{"lucidquery-nexus-coder":{"name":"LucidQuery Nexus Coder","limit":{"context":250000,"output":60000},"cost":{"input":2,"output":5},"updated":"2025-09-01"},"lucidquery-agi-01-frontier":{"name":"AGI-01 Frontier","limit":{"context":300000,"output":120000},"cost":{"input":4.5,"output":22},"updated":"2026-06-16"},"lucidnova-rf1-100b":{"name":"LucidNova RF1 100B","limit":{"context":120000,"output":8000},"cost":{"input":2,"output":5},"updated":"2025-09-10"},"lucidquery-agi-01-swift":{"name":"AGI-01 Swift","limit":{"context":300000,"output":120000},"cost":{"input":2.5,"output":15},"updated":"2026-06-16"}}},"thinkingmachines":{"name":"Thinking Machines","npm":"@ai-sdk/anthropic","models":{"thinkingmachines/Inkling":{"name":"Inkling","limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"updated":"2026-07-15"},"thinkingmachines/Inkling:peft:262144":{"name":"Inkling (256K)","limit":{"context":262144,"output":262144},"cost":{"input":3.74,"output":9.36,"cache_read":0.748},"updated":"2026-07-15"}}},"regolo-ai":{"name":"Regolo AI","npm":"@ai-sdk/openai-compatible","models":{"apertus-70b":{"name":"Apertus 70B","limit":{"context":30000,"output":30000},"cost":{"input":0.46,"output":2.42},"updated":"2025-09-02"},"brick-complexity-pro":{"name":"Brick Complexity Pro","limit":{"context":100000,"output":15000},"cost":{"input":0.12,"output":0.46},"updated":"2026-02-06"},"qwen3-coder-next":{"name":"Qwen3-Coder-Next","limit":{"context":262144,"output":16384},"cost":{"input":0.3,"output":1.2},"updated":"2026-03-01"},"llama-3.3-70b-instruct":{"name":"Llama 3.3 70B Instruct","limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.7},"updated":"2025-04-28"},"brick-v1-beta":{"name":"Brick v1 Beta","limit":{"context":100000,"output":15000},"cost":{"input":0,"output":0},"updated":"2026-02-06"},"faster-whisper-large-v3":{"name":"Faster Whisper Large v3","limit":{"context":448,"output":4096},"cost":{"input":0,"output":0},"updated":"2024-10-01"},"gemma4-31b":{"name":"Gemma 4 31B IT","limit":{"context":100000,"output":100000},"cost":{"input":0.46,"output":2.42},"updated":"2026-04-02"},"gpt-oss-20b":{"name":"GPT-OSS-20B","limit":{"context":128000,"output":16384},"cost":{"input":0.4,"output":1.8},"updated":"2026-03-01"},"qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":120000,"output":120000},"cost":{"input":0.58,"output":2.42},"updated":"2026-08-14"},"qwen3.5-9b":{"name":"Qwen3.5-9B","limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6},"updated":"2026-02-01"},"deepseek-ocr-2":{"name":"DeepSeek OCR 2","limit":{"context":4000,"output":4000},"cost":{"input":0,"output":0},"updated":"2026-01-27"},"qwen3-embedding-8b":{"name":"Qwen3-Embedding-8B","limit":{"context":32768,"output":8192},"cost":{"input":0.1,"output":0.1},"updated":"2026-02-01"},"glm5.2":{"name":"GLM-5.2","limit":{"context":96000,"output":96000},"cost":{"input":2.31,"output":6},"updated":"2026-06-13"},"gpt-oss-120b":{"name":"GPT-OSS-120B","limit":{"context":128000,"output":16384},"cost":{"input":1,"output":4.2},"updated":"2025-08-05"},"mistral-small-4-119b":{"name":"Mistral Small 4 119B","limit":{"context":256000,"output":16384},"cost":{"input":0.75,"output":3},"updated":"2026-03-15"},"qwen3.5-122b":{"name":"Qwen3.5-122B","limit":{"context":262144,"output":16384},"cost":{"input":0.9,"output":3.6},"updated":"2026-02-01"},"qwen3-reranker-4b":{"name":"Qwen3-Reranker-4B","limit":{"context":32768,"output":8192},"cost":{"input":0.12,"output":0.12},"updated":"2026-02-01"},"qwen-image":{"name":"Qwen-Image","limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":2},"updated":"2026-03-01"}}},"lynkr":{"name":"Lynkr","npm":"@ai-sdk/openai-compatible","models":{"lynkr-auto":{"name":"Lynkr Auto (complexity routing)","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-07-11"}}},"subconscious":{"name":"Subconscious","npm":"@ai-sdk/anthropic","models":{"subconscious/deepseek-v4.1-flash-marathon":{"name":"DeepSeek V4.1 Flash Marathon","limit":{"context":5000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-10"},"subconscious/glm-5.3-marathon":{"name":"GLM-5.3 Marathon","limit":{"context":5000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"}}},"baseten":{"name":"Baseten","npm":"@ai-sdk/openai-compatible","models":{"zai-org/GLM-5.1":{"name":"GLM 5.1","limit":{"context":202800,"output":202800},"cost":{"input":1.3,"output":4.3,"cache_read":0.26},"updated":"2026-04-07"},"zai-org/GLM-5":{"name":"GLM 5","limit":{"context":202800,"output":202800},"cost":{"input":0.95,"output":3.15,"cache_read":0.2},"updated":"2026-02-12"},"zai-org/GLM-5.2":{"name":"GLM 5.2","limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.3},"updated":"2026-06-13"},"zai-org/GLM-5.2-Fast":{"name":"GLM 5.2 Fast","limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21},"updated":"2026-06-13"},"zai-org/GLM-5.3-Fast":{"name":"GLM 5.3 Fast","limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6},"updated":"2026-08-14"},"zai-org/GLM-4.7":{"name":"GLM 4.7","limit":{"context":200000,"output":200000},"cost":{"input":0.6,"output":2.2,"cache_read":0.12},"updated":"2025-12-22"},"zai-org/GLM-5.3":{"name":"GLM 5.3","limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM 5.3 Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5},"updated":"2026-08-26"},"openai/gpt-oss-120b":{"name":"OpenAI GPT 120B","limit":{"context":128072,"output":128072},"cost":{"input":0.1,"output":0.5},"updated":"2025-08-05"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204000,"output":204000},"cost":{"input":0.3,"output":1.2},"updated":"2026-02-12"},"nvidia/Nemotron-120B-A12B":{"name":"Nemotron Super","limit":{"context":202800,"output":202800},"cost":{"input":0.3,"output":0.75,"cache_read":0.06},"updated":"2026-03-11"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"name":"Nemotron Ultra","limit":{"context":202800,"output":202800},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-04"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-06-12"},"moonshotai/Kimi-K2.5":{"name":"Kimi K2.5","limit":{"context":262000,"output":262000},"cost":{"input":0.6,"output":3,"cache_read":0.12},"updated":"2026-02-12"},"moonshotai/Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":1048576,"output":32768},"cost":{"input":1,"output":4.05},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V4.1-Flash-Fast":{"name":"DeepSeek V4.1 Flash Fast","limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":2.4},"updated":"2026-09-10"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":262144},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4.1-Flash-1017-Fast":{"name":"DeepSeek V4.1 Flash 1017 Fast","limit":{"context":1048576,"output":262144},"cost":{"input":0.6,"output":2.4},"updated":"2026-10-17"},"deepseek-ai/DeepSeek-V4.1-Flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":262144},"cost":{"input":0.3,"output":1.2},"updated":"2026-10-17"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":262144},"cost":{"input":1.32,"output":3.96},"updated":"2026-08-22"},"deepseek-ai/DeepSeek-V3.1":{"name":"DeepSeek V3.1","limit":{"context":164000,"output":131000},"cost":{"input":0.5,"output":1.5},"updated":"2025-08-25"}}},"jalapeno":{"name":"Jalapeno Cloud","npm":"@ai-sdk/openai-compatible","models":{"Qwen3-Next-80B-A3B-Instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":129024,"output":32768},"cost":{"input":0.15,"output":1.5},"updated":"2025-09"},"Qwen3-VL-235B-A22B-Thinking":{"name":"Qwen3 VL 235B A22B Thinking","limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"updated":"2025-09-23"},"GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1.38,"output":4.4},"updated":"2026-04-07"},"Qwen3.5-27B":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"updated":"2026-02-23"},"Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":271360,"output":262144},"cost":{"input":0.95,"output":4},"updated":"2026-06-12"},"Kimi-K2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":180224},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4},"updated":"2026-06-13"},"DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":1.6,"output":3.38},"updated":"2026-04-24"},"DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"updated":"2026-04-24"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2},"updated":"2026-06-01"},"Qwen3-VL-235B-A22B-Instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":129024,"output":32768},"cost":{"input":0.3,"output":1.5},"updated":"2025-09-23"},"Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"updated":"2026-07-16"},"Qwen3.5-397B-A17B":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"updated":"2026-02-15"},"Qwen3.5-122B-A10B":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"updated":"2026-02-23"},"Hy3":{"name":"Hy3","limit":{"context":202752,"output":128000},"cost":{"input":0.14,"output":0.58},"updated":"2026-07-06"},"Qwen3-Next-80B-A3B-Thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5},"updated":"2025-09"},"Qwen3.5-35B-A3B":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"}}},"edenai":{"name":"Eden AI","npm":"@ai-sdk/openai-compatible","models":{"deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-01"},"together_ai/openai/gpt-oss-120b":{"name":"GPT OSS 120B (Together AI)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-08-05"},"together_ai/meta-models/Muse-Glimmer-30B":{"name":"Muse Glimmer 30B (Together AI)","limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"updated":"2026-08-10"},"together_ai/thinkingmachines/Inkling":{"name":"Inkling (Together AI)","limit":{"context":524288,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"together_ai/deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731 (Together AI)","limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"updated":"2026-07-31"},"together_ai/deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash (Together AI)","limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-09-10"},"together_ai/deepseek-ai/DeepSeek-V4.1-Flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Together AI)","limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-10-17"},"together_ai/deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813 (Together AI)","limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"updated":"2026-08-22"},"greenference/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Greenference)","limit":{"context":1048576,"output":384000},"cost":{"input":0.22,"output":0.88,"cache_read":0.007},"updated":"2026-09-10"},"greenference/gpt-oss-20b":{"name":"GPT OSS 20B (Greenference)","limit":{"context":131072,"output":32768},"cost":{"input":0.009,"output":0.045,"cache_read":0.0045},"updated":"2025-08-05"},"minimax/MiniMax-M2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-02-12"},"minimax/MiniMax-M2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2025-12-23"},"minimax/MiniMax-M2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"updated":"2025-10-27"},"minimax/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/MiniMax-M2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"xai/grok-4.20-0309-reasoning":{"name":"Grok 4.20 (Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"xai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"xai/grok-4-fast-non-reasoning":{"name":"X-Ai/Grok-4-Fast-Non-Reasoning","limit":{"context":2000000,"output":2000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"updated":"2025-12-18"},"xai/grok-latest":{"name":"Grok Latest (Grok 4.7)","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"xai/grok-4.20-0309-non-reasoning":{"name":"Grok 4.20 (Non-Reasoning)","limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-09"},"xai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"xai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"cloudflare/@cf/zai-org/glm-4.7-flash":{"name":"GLM-4.7-Flash (Cloudflare)","limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4},"updated":"2026-01-19"},"cloudflare/@cf/openai/gpt-oss-20b":{"name":"GPT OSS 20B (Cloudflare)","limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.3},"updated":"2025-08-05"},"cloudflare/@cf/openai/gpt-oss-120b":{"name":"GPT OSS 120B (Cloudflare)","limit":{"context":128000,"output":32768},"cost":{"input":0.35,"output":0.75},"updated":"2025-08-05"},"cloudflare/@cf/meta/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct (Cloudflare)","limit":{"context":60000,"output":32000},"cost":{"input":0.027,"output":0.201},"updated":"2024-09-25"},"cloudflare/@cf/meta/llama-guard-3-8b":{"name":"Llama-Guard-3-8B (Cloudflare)","limit":{"context":131072,"output":4096},"cost":{"input":0.484,"output":0.03},"updated":"2024-07-23"},"cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"name":"Gemma-SEA-LION-v4-27B-IT (Cloudflare)","limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"updated":"2025-09-23"},"cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct":{"name":"Qwen2.5-Coder-32B-Instruct (Cloudflare)","limit":{"context":32768,"output":8192},"cost":{"input":0.66,"output":1},"updated":"2024-11-12"},"cloudflare/@cf/mistralai/mistral-small-3.1-24b-instruct":{"name":"Mistral Small 3.1 24B (Cloudflare)","limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555},"updated":"2025-03-17"},"cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (Cloudflare)","limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"updated":"2026-07-31"},"cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813 (Cloudflare)","limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"cohere/command-r7b-12-2024":{"name":"Command R7B","limit":{"context":132000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2024-12-02"},"cohere/command-r-08-2024":{"name":"Command R","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"updated":"2024-08-30"},"cohere/c4ai-aya-expanse-32b":{"name":"Aya Expanse 32B","limit":{"context":128000,"output":4000},"cost":{"input":0.5,"output":1.5},"updated":"2024-10-24"},"cohere/command-a-03-2025":{"name":"Command A","limit":{"context":288000,"output":8000},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"cohere/command-r-plus-08-2024":{"name":"Command R+","limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"updated":"2024-08-30"},"infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{"name":"Ministral 3 14B (Infomaniak)","limit":{"context":100000,"output":262144},"cost":{"input":0.33759,"output":0.45012},"updated":"2025-12-02"},"ionos/meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct (IONOS)","limit":{"context":128000,"output":4096},"cost":{"input":0.731445,"output":0.731445},"updated":"2024-12-06"},"ionos/openai/gpt-oss-120b":{"name":"GPT OSS 120B (IONOS)","limit":{"context":128000,"output":32768},"cost":{"input":0.168795,"output":0.731445},"updated":"2025-08-05"},"ionos/Qwen/Qwen3-Coder-Next":{"name":"Qwen3 Coder Next (IONOS)","limit":{"context":128000,"output":65536},"cost":{"input":0.168795,"output":0.90024},"updated":"2026-02-03"},"databricks/databricks-gpt-oss-20b@eu":{"name":"GPT OSS 20B (Databricks, EU)","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07},"updated":"2025-08-05"},"databricks/databricks-gpt-oss-120b":{"name":"GPT OSS 120B (Databricks)","limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001},"updated":"2025-08-05"},"databricks/databricks-gpt-oss-20b":{"name":"GPT OSS 20B (Databricks)","limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07},"updated":"2025-08-05"},"databricks/databricks-gpt-oss-120b@eu":{"name":"GPT OSS 120B (Databricks, EU)","limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001},"updated":"2025-08-05"},"databricks/databricks-deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813 (Databricks)","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.959999,"cache_read":0.132,"cache_write":1.31999},"updated":"2026-08-22"},"databricks/databricks-deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (Databricks)","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.014,"cache_write":0.14},"updated":"2026-07-31"},"databricks/databricks-inkling":{"name":"Inkling (Databricks)","limit":{"context":1000000,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.1,"cache_write":1.00002},"updated":"2026-07-15"},"databricks/databricks-qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct (Databricks)","limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":1.20001,"cache_read":0.015001,"cache_write":0.15001},"updated":"2025-09"},"databricks/databricks-qwen3-next-80b-a3b-instruct@eu":{"name":"Qwen3-Next 80B-A3B Instruct (Databricks, EU)","limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":1.20001,"cache_read":0.015001,"cache_write":0.15001},"updated":"2025-09"},"azure/gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max (Azure)","limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"azure/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini (Azure)","limit":{"context":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-11-13"},"azure/gpt-5.1-codex":{"name":"GPT-5.1 Codex (Azure)","limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"azure/gpt-5.2-codex":{"name":"GPT-5.2 Codex (Azure)","limit":{"context":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"scaleway/gemma-3-27b-it":{"name":"Gemma 3 27B IT (Scaleway)","limit":{"context":40000,"output":131072},"cost":{"input":0.287125,"output":0.57425},"updated":"2025-03-12"},"scaleway/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507 (Scaleway)","limit":{"context":250000,"output":16384},"cost":{"input":0.843975,"output":2.531925},"updated":"2025-07-21"},"scaleway/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (Scaleway)","limit":{"context":256000,"output":384000},"cost":{"input":0.45012,"output":0.90024,"cache_read":0.090024},"updated":"2026-07-31"},"scaleway/llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct (Scaleway)","limit":{"context":128000,"output":4096},"cost":{"input":1.01277,"output":1.01277},"updated":"2024-12-06"},"scaleway/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Scaleway)","limit":{"context":256000,"output":384000},"cost":{"input":0.67518,"output":2.02554,"cache_read":0.135036},"updated":"2026-09-10"},"scaleway/qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct (Scaleway)","limit":{"context":128000,"output":65536},"cost":{"input":0.22506,"output":0.90024},"updated":"2025-04"},"scaleway/gpt-oss-120b":{"name":"GPT OSS 120B (Scaleway)","limit":{"context":128000,"output":32768},"cost":{"input":0.168795,"output":0.67518},"updated":"2025-08-05"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-pro-latest":{"name":"GPT Pro Latest (GPT-5.6 Sol)","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-mini-latest":{"name":"GPT Mini Latest (GPT-5.6 Luna)","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"updated":"2025-03-19"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-latest":{"name":"GPT Latest (GPT-6 Astra)","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8191,"output":8192},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2025-06-10"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-04-24"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-01"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-04-24"},"deepseek/deepseek-chat":{"name":"DeepSeek Chat","limit":{"context":131072,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-02-28"},"amazon/moonshotai.kimi-k2.5":{"name":"Kimi K2.5 (Amazon Bedrock)","limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3},"updated":"2026-01"},"amazon/amazon.nova-micro-v1:0":{"name":"Nova Micro","limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875},"updated":"2024-12-03"},"amazon/amazon.nova-pro-v1:0":{"name":"Nova Pro","limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2},"updated":"2024-12-03"},"amazon/google.gemma-3-27b-it@us":{"name":"Gemma 3 27B IT (Amazon Bedrock, US)","limit":{"context":128000,"output":131072},"cost":{"input":0.23,"output":0.38},"updated":"2025-03-12"},"amazon/moonshot.kimi-k2-thinking":{"name":"Kimi K2 Thinking (Amazon Bedrock)","limit":{"context":256000,"output":262144},"cost":{"input":0.6,"output":2.5},"updated":"2025-11-06"},"amazon/mistral.voxtral-small-24b-2507":{"name":"Voxtral Small 24B 2507 (Amazon Bedrock)","limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"},"amazon/zai.glm-4.7-flash":{"name":"GLM-4.7-Flash (Amazon Bedrock)","limit":{"context":203000,"output":131072},"cost":{"input":0.07,"output":0.4},"updated":"2026-01-19"},"amazon/google.gemma-3-4b-it@us":{"name":"Gemma 3 4B IT (Amazon Bedrock, US)","limit":{"context":128000,"output":131072},"cost":{"input":0.04,"output":0.08},"updated":"2025-03-12"},"amazon/zai.glm-4.7-flash@us":{"name":"GLM-4.7-Flash (Amazon Bedrock, US)","limit":{"context":203000,"output":131072},"cost":{"input":0.07,"output":0.4},"updated":"2026-01-19"},"amazon/google.gemma-3-12b-it@us":{"name":"Gemma 3 12B IT (Amazon Bedrock, US)","limit":{"context":128000,"output":131072},"cost":{"input":0.09,"output":0.29},"updated":"2025-03-12"},"amazon/qwen.qwen3-coder-next":{"name":"Qwen3 Coder Next (Amazon Bedrock)","limit":{"context":256000,"output":65536},"cost":{"input":0.5,"output":1.2},"updated":"2026-02-03"},"amazon/mistral.pixtral-large-2502-v1:0@us":{"name":"Pixtral Large (25.02) (Amazon Bedrock, US)","limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"updated":"2025-04-08"},"amazon/mistral.voxtral-mini-3b-2507":{"name":"Voxtral Mini 3B 2507 (Amazon Bedrock)","limit":{"context":32768,"output":32768},"cost":{"input":0.04,"output":0.04},"updated":"2025-07-15"},"amazon/openai.gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B (Amazon Bedrock)","limit":{"context":128000,"output":131072},"cost":{"input":0.07,"output":0.2},"updated":"2025-10-29"},"amazon/google.gemma-3-27b-it":{"name":"Gemma 3 27B IT (Amazon Bedrock)","limit":{"context":128000,"output":131072},"cost":{"input":0.23,"output":0.38},"updated":"2025-03-12"},"amazon/amazon.nova-pro-v1:0@us":{"name":"Nova Pro (US)","limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2},"updated":"2024-12-03"},"amazon/amazon.nova-lite-v1:0":{"name":"Nova Lite","limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015},"updated":"2024-12-03"},"amazon/amazon.nova-micro-v1:0@us":{"name":"Nova Micro (US)","limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875},"updated":"2024-12-03"},"amazon/mistral.pixtral-large-2502-v1:0":{"name":"Pixtral Large (25.02) (Amazon Bedrock)","limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"updated":"2025-04-08"},"amazon/amazon.nova-lite-v1:0@us":{"name":"Nova Lite (US)","limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015},"updated":"2024-12-03"},"amazon/mistral.voxtral-small-24b-2507@us":{"name":"Voxtral Small 24B 2507 (Amazon Bedrock, US)","limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.3},"updated":"2025-07-15"},"amazon/google.gemma-3-12b-it":{"name":"Gemma 3 12B IT (Amazon Bedrock)","limit":{"context":128000,"output":131072},"cost":{"input":0.09,"output":0.29},"updated":"2025-03-12"},"amazon/mistral.voxtral-mini-3b-2507@us":{"name":"Voxtral Mini 3B 2507 (Amazon Bedrock, US)","limit":{"context":32768,"output":32768},"cost":{"input":0.04,"output":0.04},"updated":"2025-07-15"},"amazon/google.gemma-3-4b-it":{"name":"Gemma 3 4B IT (Amazon Bedrock)","limit":{"context":128000,"output":131072},"cost":{"input":0.04,"output":0.08},"updated":"2025-03-12"},"amazon/openai.gpt-oss-safeguard-20b@us":{"name":"GPT OSS Safeguard 20B (Amazon Bedrock, US)","limit":{"context":128000,"output":131072},"cost":{"input":0.07,"output":0.2},"updated":"2025-10-29"},"nebius/openai/gpt-oss-120b":{"name":"GPT OSS 120B (Nebius)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.15},"updated":"2025-08-05"},"nebius/meta-models/muse-spark-open":{"name":"Muse Spark Open (Nebius)","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1.25},"updated":"2026-10-15"},"nebius/nvidia/nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B (Nebius)","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.9,"cache_read":0.3},"updated":"2026-03-11"},"nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B (Nebius)","limit":{"context":1048576,"output":128000},"cost":{"input":1,"output":3,"cache_read":1},"updated":"2026-06-04"},"nebius/Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507 (Nebius)","limit":{"context":262144,"output":16384},"cost":{"input":0.2,"output":0.6,"cache_read":0.2},"updated":"2025-07-21"},"nebius/google/gemma-3-27b-it":{"name":"Gemma 3 27B IT (Nebius)","limit":{"context":110000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.1},"updated":"2025-03-12"},"nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731 (Nebius)","limit":{"context":1024000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"updated":"2026-07-31"},"nebius/deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash (Nebius)","limit":{"context":1048000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"updated":"2026-09-10"},"nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813 (Nebius)","limit":{"context":979000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"updated":"2026-08-22"},"mistral/ministral-8b-2512":{"name":"Ministral 3 8B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"updated":"2025-12-02"},"mistral/ministral-14b-2512":{"name":"Ministral 3 14B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"updated":"2025-12-02"},"mistral/magistral-medium-latest":{"name":"Magistral Medium (latest)","limit":{"context":262144,"output":16384},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2025-03-20"},"mistral/devstral-medium-latest":{"name":"Devstral 2 (latest)","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"updated":"2025-12-02"},"mistral/mistral-small-latest":{"name":"Mistral Small (latest)","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"mistral/codestral-latest":{"name":"Codestral (latest)","limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-01-04"},"mistral/ministral-3b-2512":{"name":"Ministral 3 3B 2512","limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01},"updated":"2025-12-02"},"mistral/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"mistral/codestral-2508":{"name":"Codestral 25.08","limit":{"context":256000,"output":8192},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-07-30"},"mistral/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistral/mistral-medium-2604":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-04-29"},"mistral/devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-12-09"},"mistral/mistral-medium-2505":{"name":"Mistral Medium 3","limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2},"updated":"2025-05-07"},"mistral/mistral-medium-latest":{"name":"Mistral Medium (latest)","limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-04-29"},"mistral/mistral-medium-3-5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"updated":"2026-04-30"},"mistral/mistral-medium-3":{"name":"Mistral Medium 3","limit":{"context":262144,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-05-07"},"mistral/mistral-large-2407":{"name":"Mistral Large 2407","limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-11-19"},"mistral/mistral-large-latest":{"name":"Mistral Large (latest)","limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2025-12-02"},"mistral/voxtral-small-latest":{"name":"Voxtral Small (latest)","limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"updated":"2025-07-15"},"deepinfra/nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B (Deep Infra)","limit":{"context":262144,"output":262144},"cost":{"input":0.085,"output":0.4},"updated":"2026-03-11"},"deepinfra/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B (Deep Infra)","limit":{"context":262144,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"updated":"2026-06-04"},"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":{"name":"Llama-3.2-11B-Vision-Instruct (Deep Infra)","limit":{"context":131072,"output":4096},"cost":{"input":0.345,"output":0.345},"updated":"2024-09-25"},"deepinfra/meta-llama/Llama-3.3-70B-Instruct":{"name":"Llama-3.3-70B-Instruct (Deep Infra)","limit":{"context":131072,"output":4096},"cost":{"input":0.1,"output":0.32},"updated":"2024-12-06"},"deepinfra/meta-llama/Llama-Guard-3-8B":{"name":"Llama-Guard-3-8B (Deep Infra)","limit":{"context":131072,"output":4096},"cost":{"input":0.055,"output":0.055},"updated":"2024-07-23"},"deepinfra/zai-org/GLM-4.7-Flash":{"name":"GLM-4.7-Flash (Deep Infra)","limit":{"context":202752,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"updated":"2026-01-19"},"deepinfra/openai/gpt-oss-20b":{"name":"GPT OSS 20B (Deep Infra)","limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.14},"updated":"2025-08-05"},"deepinfra/openai/gpt-oss-120b":{"name":"GPT OSS 120B (Deep Infra)","limit":{"context":131072,"output":32768},"cost":{"input":0.037,"output":0.17},"updated":"2025-08-05"},"deepinfra/meta-models/Muse-Glimmer-30B":{"name":"Muse Glimmer 30B (Deep Infra)","limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"updated":"2026-08-10"},"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{"name":"Nemotron 3 Nano 30B A3B (Deep Infra)","limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025},"updated":"2025-12-15"},"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":{"name":"Llama 3.1 Nemotron 70B Instruct (Deep Infra)","limit":{"context":131072,"output":8192},"cost":{"input":0.6,"output":0.6},"updated":"2025-04-15"},"deepinfra/stepfun-ai/Step-3.7-Flash":{"name":"Step 3.7 Flash (Deep Infra)","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"deepinfra/stepfun-ai/Step-5-Preview":{"name":"Step 5 Preview (Deep Infra)","limit":{"context":1048576,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"deepinfra/stepfun-ai/Step-3.5-Flash":{"name":"Step 3.5 Flash (Deep Infra)","limit":{"context":262144,"output":256000},"cost":{"input":0.09,"output":0.3,"cache_read":0.02},"updated":"2026-02-13"},"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":{"name":"Qwen3-Next 80B-A3B Instruct (Deep Infra)","limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":1.1},"updated":"2025-09"},"deepinfra/Qwen/Qwen3-Max":{"name":"Qwen3 Max (Deep Infra)","limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24},"updated":"2025-09-23"},"deepinfra/Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen3 VL 30B A3B Instruct (Deep Infra)","limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-04"},"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":{"name":"Qwen3-Coder 480B-A35B Instruct (Deep Infra)","limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":1.6},"updated":"2025-04"},"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507 (Deep Infra)","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"updated":"2025-07-21"},"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct":{"name":"Qwen3 VL 235B A22B Instruct (Deep Infra)","limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"updated":"2025-09-23"},"deepinfra/NousResearch/Hermes-3-Llama-3.1-70B":{"name":"Hermes 3 70B Instruct (Deep Infra)","limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7},"updated":"2024-08-18"},"deepinfra/NousResearch/Hermes-3-Llama-3.1-405B":{"name":"Hermes 3 405B Instruct (Deep Infra)","limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1},"updated":"2024-08-16"},"deepinfra/moonshotai/Kimi-K2-Instruct":{"name":"Kimi K2 Instruct (Deep Infra)","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2},"updated":"2025-07-11"},"deepinfra/moonshotai/Kimi-K2.5":{"name":"Kimi K2.5 (Deep Infra)","limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.25,"cache_read":0.07},"updated":"2026-01"},"deepinfra/google/gemma-3-27b-it":{"name":"Gemma 3 27B IT (Deep Infra)","limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"updated":"2025-03-12"},"deepinfra/google/gemma-3-4b-it":{"name":"Gemma 3 4B IT (Deep Infra)","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"updated":"2025-03-12"},"deepinfra/google/gemma-3-12b-it":{"name":"Gemma 3 12B IT (Deep Infra)","limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"updated":"2025-03-12"},"deepinfra/ByteDance/Seed-2.0-mini":{"name":"Seed 2.0 Mini (Deep Infra)","limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"updated":"2026-02-14"},"deepinfra/ByteDance/Seed-2.0-code":{"name":"Seed 2.0 Code (Deep Infra)","limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1},"updated":"2026-02-14"},"deepinfra/tencent/Hy4-preview":{"name":"Hy4 preview (Deep Infra)","limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"deepinfra/tencent/Hy3":{"name":"Hy3 (Deep Infra)","limit":{"context":262144,"output":128000},"cost":{"input":0.13,"output":0.53,"cache_read":0.033},"updated":"2026-07-06"},"deepinfra/mistralai/Mistral-Small-24B-Instruct-2501":{"name":"Mistral Small 3 (Deep Infra)","limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08},"updated":"2025-01-30"},"deepinfra/thinkingmachines/Inkling":{"name":"Inkling (Deep Infra)","limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"updated":"2026-07-15"},"deepinfra/thinkingmachines/Inkling-Small":{"name":"Inkling Small (Deep Infra)","limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"deepinfra/microsoft/WizardLM-2-8x22B":{"name":"WizardLM 2 8x22B (Deep Infra)","limit":{"context":65536,"output":8000},"cost":{"input":0.48,"output":0.48},"updated":"2024-04-15"},"deepinfra/Gryphe/MythoMax-L2-13b":{"name":"MythoMax L2 13B (Deep Infra)","limit":{"context":4096,"output":3200},"cost":{"input":0.4,"output":0.4},"updated":"2023-08-10"},"deepinfra/deepseek-ai/DeepSeek-V3-0324":{"name":"DeepSeek V3 0324 (Deep Infra)","limit":{"context":163840,"output":163840},"cost":{"input":0.24,"output":0.9,"cache_read":0.135},"updated":"2025-03-24"},"deepinfra/deepseek-ai/DeepSeek-V3":{"name":"DeepSeek-V3 (Deep Infra)","limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89},"updated":"2024-12-26"},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731 (Deep Infra)","limit":{"context":1048576,"output":384000},"cost":{"input":0.06,"output":0.18,"cache_read":0.015},"updated":"2026-07-31"},"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash (Deep Infra)","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-09-10"},"deepinfra/deepseek-ai/DeepSeek-R1-0528":{"name":"DeepSeek R1 0528 (Deep Infra)","limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"updated":"2025-05-28"},"deepinfra/deepseek-ai/DeepSeek-R1":{"name":"DeepSeek-R1 (Deep Infra)","limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.4},"updated":"2025-05-29"},"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Deep Infra)","limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"updated":"2026-10-17"},"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813 (Deep Infra)","limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"updated":"2026-08-22"},"groq/openai/gpt-oss-20b":{"name":"GPT OSS 20B (Groq)","limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-08-05"},"groq/openai/gpt-oss-120b":{"name":"GPT OSS 120B (Groq)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2025-08-05"},"groq/openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B (Groq)","limit":{"context":131072,"output":131072},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-10-29"},"cerebras/gpt-oss-120b":{"name":"GPT OSS 120B (Cerebras)","limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75,"cache_read":0.35},"updated":"2025-08-05"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4-8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"anthropic/claude-fable-5-1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-fable-latest":{"name":"Claude Fable Latest (Claude Fable 5.1)","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-opus-latest":{"name":"Claude Opus Latest (Claude Opus 5.5)","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5-5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-haiku-latest":{"name":"Claude Haiku Latest (Claude Haiku 5.5)","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-haiku-5-5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-sonnet-latest":{"name":"Claude Sonnet Latest (Claude Sonnet 5.5)","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-opus-4-5-20251101":{"name":"Claude Opus 4.5","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-01"},"anthropic/claude-opus-5-5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-opus-4-5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"vertex/gemini-3.1-flash-image":{"name":"Nano Banana 2 (Vertex AI)","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"vertex/gemini-3.7-flash@eu":{"name":"Gemini 3.7 Flash (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-08-13"},"vertex/gemini-3.6-flash@eu":{"name":"Gemini 3.6 Flash (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-07-21"},"vertex/gemini-3.8-flash@eu":{"name":"Gemini 3.8 Flash (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"vertex/gemini-3.6-flash@us":{"name":"Gemini 3.6 Flash (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-07-21"},"vertex/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-05-07"},"vertex/gemini-3.7-flash@us":{"name":"Gemini 3.7 Flash (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-08-13"},"vertex/gemini-3.5-flash@eu":{"name":"Gemini 3.5 Flash (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333,"reasoning":9},"updated":"2026-05-19"},"vertex/gemini-flash-latest":{"name":"Gemini Flash Latest (Gemini 3.8 Flash, Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"vertex/gemini-3-pro-image":{"name":"Nano Banana Pro (Vertex AI)","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-05-28"},"vertex/gemini-3.1-flash-lite@us":{"name":"Gemini 3.1 Flash Lite (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-05-07"},"vertex/gemini-nano-banana-2.1":{"name":"Nano Banana 2.1 (Vertex AI)","limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":7.5},"updated":"2026-10-06"},"vertex/gemini-4-argon@us":{"name":"Gemini 4 Argon (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"vertex/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333,"reasoning":3},"updated":"2025-12-17"},"vertex/gemini-4-argon@eu":{"name":"Gemini 4 Argon (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"vertex/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"vertex/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2026-07-21"},"vertex/gemini-3.7-flash":{"name":"Gemini 3.7 Flash (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-08-13"},"vertex/gemini-3.6-flash":{"name":"Gemini 3.6 Flash (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-07-21"},"vertex/gemini-3.1-flash-lite@eu":{"name":"Gemini 3.1 Flash Lite (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-05-07"},"vertex/gemini-3.5-flash-lite@us":{"name":"Gemini 3.5 Flash Lite (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2026-07-21"},"vertex/gemini-3.8-flash":{"name":"Gemini 3.8 Flash (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"vertex/gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite (Vertex AI)","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5},"updated":"2026-06-30"},"vertex/gemini-3.5-flash@us":{"name":"Gemini 3.5 Flash (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333,"reasoning":9},"updated":"2026-05-19"},"vertex/gemini-3.5-flash":{"name":"Gemini 3.5 Flash (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333,"reasoning":9},"updated":"2026-05-19"},"vertex/gemini-4-argon":{"name":"Gemini 4 Argon (Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"vertex/gemini-3.5-flash-lite@eu":{"name":"Gemini 3.5 Flash Lite (Vertex AI, EU)","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2026-07-21"},"vertex/gemini-3.8-flash@us":{"name":"Gemini 3.8 Flash (Vertex AI, US)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"vertex/gemini-2.5-flash-image":{"name":"Nano Banana (Vertex AI)","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2025-08-26"},"vertex/gemini-pro-latest":{"name":"Gemini Pro Latest (Gemini 4 Argon, Vertex AI)","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"google/gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":65536,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-05-07"},"google/gemini-flash-latest":{"name":"Gemini Flash Latest (Gemini 3.8 Flash)","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"google/deep-research-max-preview-04-2026":{"name":"Deep Research Max Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-04-21"},"google/gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-05-28"},"google/gemini-nano-banana-2.1":{"name":"Nano Banana 2.1","limit":{"context":65536,"output":32768},"cost":{"input":1.5,"output":7.5},"updated":"2026-10-06"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333,"reasoning":3},"updated":"2025-12-17"},"google/deep-research-preview-04-2026":{"name":"Gemini Deep Research Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"updated":"2026-04-21"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2026-07-21"},"google/gemini-3-pro-image-preview":{"name":"Nano Banana Pro Preview","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2025-11-20"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-07-21"},"google/gemini-3.1-flash-image-preview":{"name":"Nano Banana 2 Preview","limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3},"updated":"2026-02-26"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":0.083333,"reasoning":7.5},"updated":"2026-09-02"},"google/gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5},"updated":"2026-06-30"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333,"reasoning":9},"updated":"2026-05-19"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"google/gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2025-08-26"},"google/gemini-pro-latest":{"name":"Gemini Pro Latest (Gemini 4 Argon)","limit":{"context":1048576,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":0.375,"reasoning":20},"updated":"2026-10-13"},"ovhcloud/gpt-oss-20b":{"name":"GPT OSS 20B (OVHcloud)","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.18},"updated":"2025-08-05"},"ovhcloud/gpt-oss-120b":{"name":"GPT OSS 120B (OVHcloud)","limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.47},"updated":"2025-08-05"},"tensorx/deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (TensorX)","limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.0625},"updated":"2026-07-31"},"tensorx/deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 0528 (TensorX)","limit":{"context":164000,"output":32768},"cost":{"input":0.66,"output":2.6,"cache_read":0.165},"updated":"2025-05-28"},"tensorx/deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (TensorX)","limit":{"context":1048576,"output":384000},"cost":{"input":0.5,"output":1.5,"cache_read":0.125},"updated":"2026-10-17"},"tensorx/deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (TensorX)","limit":{"context":1048576,"output":384000},"cost":{"input":0.5,"output":1.5,"cache_read":0.125},"updated":"2026-09-10"},"tensorx/deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813 (TensorX)","limit":{"context":1048576,"output":384000},"cost":{"input":2,"output":4,"cache_read":0.5},"updated":"2026-08-22"},"tensorx/moonshotai/kimi-k2.5":{"name":"Kimi K2.5 (TensorX)","limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125},"updated":"2026-01"},"moonshot/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"moonshot/kimi-k2.7-code-highspeed":{"name":"Kimi K2.7 Code Highspeed","limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"updated":"2026-06-12"},"moonshot/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"moonshot/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"zai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"zai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"zai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"zai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"zai/glm-4.7":{"name":"GLM-4.7","limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-12-22"},"zai/glm-4.6v":{"name":"GLM-4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"updated":"2025-12-08"},"zai/glm-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-04-07"},"zai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"zai/glm-4.6":{"name":"GLM-4.6","limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"zai/glm-5":{"name":"GLM-5","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"perplexityai/sonar-deep-research":{"name":"Sonar Deep Research","limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-09-01"},"perplexityai/sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15},"updated":"2025-09-01"},"perplexityai/sonar-reasoning-pro":{"name":"Sonar Reasoning Pro","limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8},"updated":"2025-09-01"},"perplexityai/sonar":{"name":"Sonar","limit":{"context":127072,"output":4096},"cost":{"input":1,"output":1},"updated":"2025-09-01"},"fireworks_ai/gpt-oss-120b":{"name":"GPT OSS 120B (Fireworks AI)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.014},"updated":"2025-08-05"},"fireworks_ai/accounts/fireworks/models/muse-spark-open":{"name":"Muse Spark Open (Fireworks AI)","limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"fireworks_ai/accounts/fireworks/models/inkling":{"name":"Inkling (Fireworks AI)","limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":{"name":"GPT OSS 120B (Fireworks AI)","limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2025-08-05"},"flexai/Step-3.7-Flash":{"name":"Step 3.7 Flash (FlexAI)","limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.03},"updated":"2026-05-29"},"flexai/DeepSeek-V4-Flash-0731@eu":{"name":"DeepSeek V4 Flash 0731 (FlexAI, EU)","limit":{"context":1048576,"output":384000},"cost":{"input":0.119,"output":0.238,"cache_read":0.0178},"updated":"2026-07-31"},"flexai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731 (FlexAI)","limit":{"context":1048576,"output":384000},"cost":{"input":0.119,"output":0.238,"cache_read":0.0178},"updated":"2026-07-31"},"flexai/gpt-oss-20b":{"name":"GPT OSS 20B (FlexAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.02,"output":0.1,"cache_read":0.003},"updated":"2025-08-05"},"flexai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash (FlexAI)","limit":{"context":1048576,"output":384000},"cost":{"input":0.1,"output":0.66,"cache_read":0.015},"updated":"2026-09-10"},"flexai/Muse-Glimmer-30B":{"name":"Muse Glimmer 30B (FlexAI)","limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.045},"updated":"2026-08-10"},"flexai/gpt-oss-120b":{"name":"GPT OSS 120B (FlexAI)","limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.0075},"updated":"2025-08-05"},"greenpt/qwen3-235b-a22b-instruct-2507":{"name":"Qwen3 235B-A22B Instruct 2507 (Greenpt)","limit":{"context":250000,"output":16384},"cost":{"input":1.01277,"output":3.03831},"updated":"2025-07-21"},"greenpt/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (Greenpt)","limit":{"context":1000000,"output":384000},"cost":{"input":0.157542,"output":0.393855,"cache_read":0.045012},"updated":"2026-07-31"},"greenpt/llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct (Greenpt)","limit":{"context":128000,"output":4096},"cost":{"input":1.23783,"output":1.23783},"updated":"2024-12-06"},"greenpt/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Greenpt)","limit":{"context":1000000,"output":384000},"cost":{"input":0.247566,"output":1.23783,"cache_read":0.012378},"updated":"2026-09-10"},"greenpt/gpt-oss-120b":{"name":"GPT OSS 120B (Greenpt)","limit":{"context":128000,"output":32768},"cost":{"input":0.22506,"output":0.78771},"updated":"2025-08-05"},"tencent/hy4-preview":{"name":"Hy4 preview (Tencent)","limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Tencent)","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"tencent/hy3":{"name":"Hy3 (Tencent)","limit":{"context":256000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"tencent/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813 (Tencent)","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-08-22"},"qwen/qwen-mt-plus":{"name":"Qwen MT Plus","limit":{"context":4096,"output":8192},"cost":{"input":2.46,"output":7.37},"updated":"2025-07-24"},"qwen/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731 (Alibaba)","limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.022},"updated":"2026-07-31"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"updated":"2026-08-26"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-12"},"qwen/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017 (Alibaba)","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-10-17"},"qwen/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash (Alibaba)","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-09-10"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-09-02"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625},"updated":"2026-08-14"},"qwen/qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47},"updated":"2026-09-17"},"qwen/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"qwen/qwen-max":{"name":"Qwen Max","limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4,"cache_read":0.32},"updated":"2025-01-25"},"qwen/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813 (Alibaba)","limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.066},"updated":"2026-08-22"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"updated":"2025-07-28"}}},"wafer.ai":{"name":"Wafer","npm":"@ai-sdk/openai-compatible","models":{"GLM-5.1":{"name":"GLM-5.1","limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.1,"cache_write":0},"updated":"2026-06-01"},"glm5.2-fast":{"name":"GLM5.2-Fast","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":10.25,"cache_read":0.5,"cache_write":0},"updated":"2026-06-13"},"Kimi-K2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":65536},"cost":{"input":1.14,"output":4.8,"cache_read":0.19,"cache_write":0},"updated":"2026-04-21"},"GLM-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.1,"cache_read":0.2,"cache_write":0},"updated":"2026-06-22"},"MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.07,"cache_write":0},"updated":"2026-06-01"}}},"openrouter":{"name":"OpenRouter","npm":"@openrouter/ai-sdk-provider","models":{"~unbiased/pareto-latest":{"name":"Pareto Latest","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03},"updated":"2026-10-13"},"~google/gemini-flash-latest":{"name":"Gemini Flash Latest","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-04-27"},"~google/gemini-pro-latest":{"name":"Gemini Pro Latest","limit":{"context":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":0.1875,"reasoning":10},"updated":"2026-04-27"},"fireworks/ember-1":{"name":"Ember-1","limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-09-24"},"thedrummer/cydonia-24b-v4.1":{"name":"Cydonia 24B V4.1","limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15},"updated":"2025-09-27"},"thedrummer/skyfall-36b-v2":{"name":"Skyfall 36B V2","limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25},"updated":"2025-03-10"},"thedrummer/unslopnemo-12b":{"name":"UnslopNemo 12B","limit":{"context":1024000,"output":819200},"cost":{"input":0.4,"output":0.4},"updated":"2024-11-08"},"sakana/sakana-namazu":{"name":"Sakana Namazu","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"updated":"2026-08-03"},"sakana/fugu-ultra-v2":{"name":"Fugu Ultra v2","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-09-11"},"sakana/fugu-ultra":{"name":"Fugu Ultra","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-06-15"},"sakana/fugu-max":{"name":"Fugu Max","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-11"},"meta-llama/llama-3.1-70b-instruct":{"name":"Llama-3.1-70B-Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4},"updated":"2024-07-23"},"meta-llama/llama-3.3-70b-instruct":{"name":"Llama-3.3-70B-Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32},"updated":"2024-12-06"},"meta-llama/llama-3.2-1b-instruct":{"name":"Llama 3.2 1B Instruct","limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201},"updated":"2024-09-25"},"meta-llama/llama-4-maverick":{"name":"Llama 4 Maverick","limit":{"context":524288,"output":16384},"cost":{"input":0.1875,"output":0.6525,"cache_read":0.05},"updated":"2025-04-05"},"meta-llama/llama-4-scout":{"name":"Llama 4 Scout","limit":{"context":1310720,"output":16384},"cost":{"input":0.1,"output":0.3},"updated":"2025-04-05"},"meta-llama/llama-3.2-3b-instruct":{"name":"Llama 3.2 3B Instruct","limit":{"context":131072,"output":72000},"cost":{"input":0.0509,"output":0.335},"updated":"2024-09-25"},"meta-llama/llama-guard-4-12b":{"name":"Llama Guard 4 12B","limit":{"context":163840,"output":16384},"cost":{"input":0.18,"output":0.18},"updated":"2025-04-30"},"meta-llama/llama-3.1-8b-instruct":{"name":"Llama-3.1-8B-Instruct","limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.08,"cache_read":0.025},"updated":"2024-07-23"},"reflection/beam-1.0-501b-a23b":{"name":"Beam 1.0 501B A23B","limit":{"context":1048576,"output":943718},"cost":{"input":1,"output":3,"cache_read":0.1},"updated":"2026-10-16"},"minimax/minimax-m1":{"name":"MiniMax M1","limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2},"updated":"2025-06-17"},"minimax/minimax-m3.1-flash:free":{"name":"MiniMax M3.1 Flash (free)","limit":{"context":1000000,"output":524288},"cost":{"input":0,"output":0},"updated":"2026-10-19"},"minimax/minimax-m2-her":{"name":"MiniMax-M2 Her","limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-01-23"},"minimax/minimax-m2":{"name":"MiniMax-M2","limit":{"context":204800,"output":131072},"cost":{"input":0.255,"output":1.02},"updated":"2025-10-27"},"minimax/minimax-m2.1":{"name":"MiniMax-M2.1","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2025-12-23"},"minimax/minimax-01":{"name":"MiniMax-01","limit":{"context":1000192,"output":40000},"cost":{"input":0.2,"output":1.1},"updated":"2025-01-15"},"minimax/minimax-m2.5":{"name":"MiniMax-M2.5","limit":{"context":204800,"output":32768},"cost":{"input":0.27,"output":0.95,"cache_read":0.03},"updated":"2026-02-12"},"minimax/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"minimax/minimax-m2.7":{"name":"MiniMax-M2.7","limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-03-18"},"anthracite-org/magnum-v4-72b":{"name":"Magnum v4 72B","limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5},"updated":"2024-10-22"},"cohere/command-r7b-12-2024":{"name":"Command R7B","limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"updated":"2024-12-02"},"cohere/north-mini-code:free":{"name":"North Mini Code (free)","limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0},"updated":"2026-06-17"},"cohere/command-r-08-2024":{"name":"Command R","limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"updated":"2024-08-30"},"cohere/command-a":{"name":"Command A","limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10},"updated":"2025-03-13"},"cohere/command-a-plus":{"name":"Command A+","limit":{"context":192000,"output":64000},"cost":{"input":0.3,"output":1.5,"cache_read":0.15},"updated":"2026-09-22"},"cohere/command-r-plus-08-2024":{"name":"Command R+","limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"updated":"2024-08-30"},"stepfun/step-5-preview":{"name":"Step 5 Preview","limit":{"context":1048576,"output":64000},"cost":{"input":1,"output":2.7,"cache_read":0.1},"updated":"2026-09-20"},"stepfun/step-3.7-flash":{"name":"Step 3.7 Flash","limit":{"context":262144,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"updated":"2026-05-29"},"stepfun/step-3.5-flash":{"name":"Step 3.5 Flash","limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-13"},"nex-agi/nex-n2.5-pro":{"name":"Nex-N2.5-Pro","limit":{"context":262144,"output":235929},"cost":{"input":0.075,"output":0.25,"cache_read":0.015},"updated":"2026-09-08"},"nex-agi/nex-n2.5-mini":{"name":"Nex-N2.5-Mini","limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025},"updated":"2026-09-08"},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"name":"Uncensored","limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9},"updated":"2025-07-09"},"inference-net/schematron-v2-small":{"name":"Schematron V2 Small","limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05},"updated":"2026-09-12"},"inference-net/schematron-v2-turbo":{"name":"Schematron V2 Turbo","limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03},"updated":"2026-09-12"},"inclusionai/ling-3.1-flash":{"name":"Ling 3.1 Flash","limit":{"context":262144,"output":235929},"cost":{"input":0.075,"output":0.225,"cache_read":0.015},"updated":"2026-10-02"},"inclusionai/ling-3.0-flash-vl":{"name":"Ling 3.0 Flash VL","limit":{"context":131072,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"updated":"2026-09-10"},"inclusionai/ling-3.0-flash":{"name":"Ling 3.0 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.021,"output":0.063,"cache_read":0.0042},"updated":"2026-07-23"},"openai/o1":{"name":"o1","limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"updated":"2024-12-05"},"openai/gpt-4o":{"name":"GPT-4o","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol":{"name":"GPT-6.1 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-5.6-terra-pro":{"name":"GPT-5.6 Terra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-08-07"},"openai/gpt-4-turbo":{"name":"GPT-4 Turbo","limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"updated":"2024-04-09"},"openai/gpt-5-image":{"name":"GPT-5 Image","limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25},"updated":"2025-10-14"},"openai/gpt-5.6-sol-pro":{"name":"GPT-5.6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-5.4-mini":{"name":"GPT-5.4 mini","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-03-17"},"openai/gpt-5.6-luna":{"name":"GPT-5.6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-5.5":{"name":"GPT-5.5","limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-04-23"},"openai/gpt-4o-mini-2024-07-18":{"name":"GPT-4o-mini (2024-07-18)","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"updated":"2025-04-14"},"openai/gpt-5.6-sol":{"name":"GPT-5.6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"updated":"2026-07-09"},"openai/gpt-4o-2024-11-20":{"name":"GPT-4o (2024-11-20)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-11-20"},"openai/gpt-4.1-nano":{"name":"GPT-4.1 nano","limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"updated":"2025-04-14"},"openai/gpt-5-nano":{"name":"GPT-5 Nano","limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"updated":"2025-08-07"},"openai/gpt-audio-mini":{"name":"GPT Audio Mini","limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4},"updated":"2026-01-19"},"openai/gpt-5.2-pro":{"name":"GPT-5.2 Pro","limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168},"updated":"2025-12-11"},"openai/gpt-5-pro":{"name":"GPT-5 Pro","limit":{"context":400000,"output":128000},"cost":{"input":15,"output":120},"updated":"2025-10-06"},"openai/gpt-5.4-image-2":{"name":"GPT-5.4 Image 2","limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2},"updated":"2026-04-21"},"openai/gpt-3.5-turbo":{"name":"GPT-3.5-turbo","limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"updated":"2023-11-06"},"openai/gpt-5.1-codex-max":{"name":"GPT-5.1 Codex Max","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"updated":"2026-03-05"},"openai/gpt-5.5-pro":{"name":"GPT-5.5 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-04-23"},"openai/gpt-oss-20b":{"name":"GPT OSS 20B","limit":{"context":131072,"output":32768},"cost":{"input":0.018,"output":0.09,"cache_read":0.009},"updated":"2025-08-05"},"openai/gpt-3.5-turbo-0613":{"name":"GPT-3.5 Turbo (older v0613)","limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2},"updated":"2024-01-25"},"openai/o1-pro":{"name":"o1-pro","limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"updated":"2025-03-19"},"openai/gpt-6-astra-pro":{"name":"GPT-6 Astra Pro","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/gpt-4o-mini":{"name":"GPT-4o mini","limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2024-07-18"},"openai/gpt-5.6-luna-pro":{"name":"GPT-5.6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"updated":"2026-07-09"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2025-08-07"},"openai/gpt-5.3-codex":{"name":"GPT-5.3 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2026-02-05"},"openai/gpt-audio":{"name":"GPT Audio","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10},"updated":"2026-01-19"},"openai/gpt-6-luna":{"name":"GPT-6 Luna","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-01-29"},"openai/o4-mini-high":{"name":"o4 Mini High","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"updated":"2025-04-16"},"openai/gpt-4o-2024-05-13":{"name":"GPT-4o (2024-05-13)","limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"updated":"2024-05-13"},"openai/gpt-4":{"name":"GPT-4","limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60},"updated":"2024-04-09"},"openai/o3-pro":{"name":"o3-pro","limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"updated":"2025-06-10"},"openai/gpt-6-luna-pro":{"name":"GPT-6 Luna Pro","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-22"},"openai/gpt-chat-latest":{"name":"GPT Chat Latest","limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"updated":"2026-05-05"},"openai/gpt-4o-2024-08-06":{"name":"GPT-4o (2024-08-06)","limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"updated":"2024-08-06"},"openai/gpt-6.1-sol-pro":{"name":"GPT-6.1 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-29"},"openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"updated":"2025-08-05"},"openai/gpt-5.1-codex-mini":{"name":"GPT-5.1 Codex mini","limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"updated":"2025-11-13"},"openai/gpt-oss-safeguard-20b":{"name":"GPT OSS Safeguard 20B","limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"updated":"2025-10-29"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"updated":"2025-11-13"},"openai/gpt-6-astra":{"name":"GPT-6 Astra","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-04"},"openai/gpt-5.1-codex":{"name":"GPT-5.1 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"updated":"2025-11-13"},"openai/gpt-5.4-nano":{"name":"GPT-5.4 nano","limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"updated":"2026-03-17"},"openai/gpt-5.6-terra":{"name":"GPT-5.6 Terra","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-07-09"},"openai/gpt-6-sol":{"name":"GPT-6 Sol","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-14"},"openai/o3-mini-high":{"name":"o3 Mini High","limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"updated":"2025-02-12"},"openai/gpt-5.4-pro":{"name":"GPT-5.4 Pro","limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180},"updated":"2026-03-05"},"openai/gpt-5.2-codex":{"name":"GPT-5.2 Codex","limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-11"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"updated":"2025-04-16"},"openai/gpt-5.2-chat":{"name":"GPT-5.2 Chat","limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"updated":"2025-12-10"},"openai/gpt-5-image-mini":{"name":"GPT-5 Image Mini","limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25},"updated":"2025-10-16"},"openai/gpt-3.5-turbo-16k":{"name":"GPT-3.5 Turbo 16k","limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4},"updated":"2023-08-28"},"openai/gpt-6-sol-pro":{"name":"GPT-6 Sol Pro","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-22"},"openai/gpt-3.5-turbo-instruct":{"name":"GPT-3.5 Turbo Instruct","limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2},"updated":"2023-09-28"},"relace/relace-search":{"name":"Relace Search","limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3},"updated":"2025-12-08"},"relace/relace-apply-3":{"name":"Relace Apply 3","limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25},"updated":"2025-09-26"},"meituan/longcat-2.0":{"name":"LongCat 2.0","limit":{"context":1048756,"output":262144},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"updated":"2026-07-20"},"meta/muse-spark-1.2-contributor":{"name":"Muse Spark 1.2 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-08-21"},"meta/muse-spark-1.2":{"name":"Muse Spark 1.2","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-08-05"},"meta/muse-spark-1.3":{"name":"Muse Spark 1.3","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-09-02"},"meta/muse-spark-open":{"name":"Muse Spark Open","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-10-15"},"meta/muse-wonder":{"name":"Muse Wonder","limit":{"context":1048576,"output":943718},"cost":{"input":4,"output":20,"cache_read":0.2},"updated":"2026-10-12"},"meta/muse-spark-1.1":{"name":"Muse Spark 1.1","limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"updated":"2026-07-09"},"meta/muse-glimmer-30b":{"name":"Muse Glimmer 30B","limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"updated":"2026-08-10"},"meta/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"updated":"2026-09-02"},"x-ai/grok-4.20":{"name":"Grok 4.20","limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-build-0.1":{"name":"Grok Build 0.1","limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2},"updated":"2026-04-16"},"x-ai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-04-17"},"x-ai/grok-4.6":{"name":"Grok 4.6","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-08-12"},"x-ai/grok-4.20-multi-agent":{"name":"Grok 4.20 Multi-Agent","limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"updated":"2026-03-31"},"x-ai/grok-4.5":{"name":"Grok 4.5","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3},"updated":"2026-07-08"},"x-ai/grok-4.7":{"name":"Grok 4.7","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-09-21"},"bytedance-seed/seed-1.6":{"name":"Seed 1.6","limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2},"updated":"2025-12-23"},"bytedance-seed/seed-2-1-turbo":{"name":"Seed 2.1 Turbo","limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5},"updated":"2026-08-12"},"bytedance-seed/seed-2.0-mini":{"name":"Seed 2.0 Mini","limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-code":{"name":"Seed 2.0 Code","limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3},"updated":"2026-02-14"},"bytedance-seed/seed-2.0-lite":{"name":"Seed 2.0 Lite","limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2},"updated":"2026-02-14"},"bytedance-seed/seed-1.6-flash":{"name":"Seed 1.6 Flash","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3},"updated":"2025-12-23"},"deepseek/deepseek-v4-flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1048576,"output":943718},"cost":{"input":0.15,"output":0.15,"cache_read":0.042},"updated":"2026-07-31"},"deepseek/deepseek-r1-0528":{"name":"DeepSeek R1 0528","limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"updated":"2025-05-28"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1048576,"output":384000},"cost":{"input":0.436044,"output":0.872088,"cache_read":0.036337},"updated":"2026-04-24"},"deepseek/deepseek-v4.1-flash-1017":{"name":"DeepSeek V4.1 Flash 1017","limit":{"context":1048576,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-10-17"},"deepseek/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1048576,"output":943718},"cost":{"input":0.0344,"output":0.08,"cache_read":0.0016},"updated":"2026-09-10"},"deepseek/deepseek-v4-flash-vision-exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1048576,"output":262144},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.00686},"updated":"2026-09-01"},"deepseek/deepseek-chat-v3.1":{"name":"DeepSeek V3.1","limit":{"context":163840,"output":32768},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"updated":"2025-08-21"},"deepseek/deepseek-chat-v3-0324":{"name":"DeepSeek V3 0324","limit":{"context":163840,"output":115200},"cost":{"input":0.29,"output":1.14,"cache_read":0.11},"updated":"2025-03-24"},"deepseek/deepseek-v3.2":{"name":"DeepSeek V3.2","limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.028},"updated":"2025-12-01"},"deepseek/deepseek-v3.1-terminus":{"name":"DeepSeek V3.1 Terminus","limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":1},"updated":"2025-09-22"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1048576,"output":943717},"cost":{"input":0.091,"output":0.182,"cache_read":0.0182},"updated":"2026-04-24"},"deepseek/deepseek-v4-pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1048576,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"updated":"2026-08-22"},"deepseek/deepseek-v3.2-exp":{"name":"DeepSeek V3.2 Exp","limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":0.41},"updated":"2025-09-29"},"deepseek/deepseek-chat":{"name":"DeepSeek Chat","limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89},"updated":"2026-02-28"},"sao10k/l3.1-euryale-70b":{"name":"Llama 3.1 Euryale 70B v2.2","limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85},"updated":"2024-08-28"},"sao10k/l3-lunaris-8b":{"name":"Llama 3 8B Lunaris","limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05},"updated":"2024-08-13"},"~moonshotai/kimi-latest":{"name":"Kimi Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.238,"output":13,"cache_read":0.228},"updated":"2026-04-27"},"moondream/moondream3-preview":{"name":"Moondream 3 Preview","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-15"},"moondream/moondream3.1-9b-a2b":{"name":"Moondream 3.1","limit":{"context":32000,"output":4096},"cost":{"input":0.3,"output":2.5},"updated":"2026-10-15"},"~openai/gpt-luna-latest":{"name":"GPT Luna Latest","limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-09-11"},"~openai/gpt-sol-latest":{"name":"GPT Sol Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-11"},"~openai/gpt-astra-latest":{"name":"GPT Astra Latest","limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-09-11"},"~openai/gpt-mini-latest":{"name":"GPT Mini Latest","limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"updated":"2026-04-27"},"~openai/gpt-terra-latest":{"name":"GPT Terra Latest","limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"updated":"2026-09-11"},"unbiased/pareto-26.9":{"name":"Pareto 26.9","limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"updated":"2026-10-13"},"unbiased/pareto-26.10":{"name":"Pareto 26.10","limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03},"updated":"2026-10-15"},"aion-labs/aion-3.5-mini":{"name":"Aion 3.5 Mini","limit":{"context":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-09-23"},"aion-labs/aion-3.5":{"name":"Aion 3.5","limit":{"context":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-09-23"},"aion-labs/aion-3.0":{"name":"Aion-3.0","limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75},"updated":"2026-07-07"},"aion-labs/aion-rp-llama-3.1-8b":{"name":"Aion-RP 1.0 (8B)","limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6},"updated":"2025-02-04"},"aion-labs/aion-2.0":{"name":"Aion-2.0","limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2},"updated":"2026-02-23"},"aion-labs/aion-3.0-mini":{"name":"Aion-3.0-Mini","limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18},"updated":"2026-07-07"},"amazon/nova-lite-v1":{"name":"Nova Lite 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24},"updated":"2024-12-05"},"amazon/nova-micro-v1":{"name":"Nova Micro 1.0","limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14},"updated":"2024-12-05"},"amazon/nova-2-lite-v1":{"name":"Nova 2 Lite","limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5},"updated":"2025-12-02"},"amazon/nova-pro-v1":{"name":"Nova Pro 1.0","limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2},"updated":"2024-12-05"},"amazon/nova-premier-v1":{"name":"Nova Premier 1.0","limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625},"updated":"2025-10-31"},"prism-ml/ternary-bonsai-2-27b":{"name":"Ternary Bonsai 2 27B","limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375},"updated":"2026-09-18"},"inception/mercury-2":{"name":"Mercury 2","limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025},"updated":"2026-03-04"},"inception/mercury-2.5":{"name":"Mercury 2.5","limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004},"updated":"2026-09-08"},"~x-ai/grok-latest":{"name":"Grok Latest","limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"updated":"2026-07-08"},"nvidia/nemotron-3.5-lightning":{"name":"Nemotron 3.5 Lightning 30B A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.2,"cache_read":0.04},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":235929},"cost":{"input":0.08,"output":0.45},"updated":"2026-03-11"},"nvidia/nemotron-3.5-lightning:free":{"name":"Nemotron 3.5 Lightning (free)","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"nvidia/nemotron-3-super-120b-a12b:free":{"name":"Nemotron 3 Super (free)","limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"updated":"2026-03-11"},"nvidia/nemotron-3-ultra-550b-a55b":{"name":"Nemotron 3 Ultra 550B A55B","limit":{"context":262144,"output":182520},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"updated":"2026-06-04"},"nvidia/nemotron-3.5-super-vl":{"name":"Nemotron 3.5 Super VL","limit":{"context":1048576,"output":235929},"cost":{"input":0.1,"output":0.4,"cache_read":0.08},"updated":"2026-10-15"},"nvidia/nemotron-3.5-content-safety":{"name":"Nemotron 3.5 Content Safety","limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2},"updated":"2026-06-04"},"nvidia/nemotron-3-ultra-550b-a55b:free":{"name":"Nemotron 3 Ultra (free)","limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"nvidia/nemotron-3.5-content-safety:free":{"name":"Nemotron 3.5 Content Safety (free)","limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-06-04"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"name":"Nemotron 3 Nano Omni (free)","limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-04-28"},"nvidia/nemotron-3.5-super-vl:free":{"name":"Nemotron 3.5 Super VL (free)","limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"updated":"2026-10-15"},"nvidia/nemotron-3-nano-30b-a3b":{"name":"Nemotron 3 Nano 30B A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.06,"output":0.24},"updated":"2025-12-15"},"~anthropic/claude-fable-latest":{"name":"Claude Fable Latest","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-06-09"},"~anthropic/claude-opus-latest":{"name":"Claude Opus Latest","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-04-21"},"~anthropic/claude-haiku-latest":{"name":"Claude Haiku Latest","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-04-27"},"~anthropic/claude-sonnet-latest":{"name":"Claude Sonnet Latest","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-04-27"},"writer/palmyra-x5":{"name":"Palmyra X5","limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6},"updated":"2026-01-21"},"perplexity/sonar-deep-research":{"name":"Sonar Deep Research","limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3},"updated":"2025-03-07"},"perplexity/sonar-pro-search":{"name":"Sonar Pro Search","limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"updated":"2025-10-30"},"perplexity/sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"updated":"2025-03-07"},"perplexity/sonar-reasoning-pro":{"name":"Sonar Reasoning Pro","limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8},"updated":"2025-03-07"},"perplexity/sonar":{"name":"Sonar","limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1},"updated":"2025-01-27"},"poolside/laguna-s-2.1":{"name":"Laguna S 2.1","limit":{"context":1048576,"output":131072},"cost":{"input":0.09,"output":0.18,"cache_read":0.009},"updated":"2026-07-21"},"poolside/laguna-xs-2.1:free":{"name":"Laguna XS 2.1 (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-02"},"poolside/laguna-xs-2.1":{"name":"Laguna XS 2.1","limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.12,"cache_read":0.03},"updated":"2026-07-02"},"poolside/laguna-s-2.1:free":{"name":"Laguna S 2.1 (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-07-21"},"arcee-ai/trinity-large-thinking":{"name":"Trinity Large Thinking","limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06},"updated":"2026-05-28"},"gryphe/mythomax-l2-13b":{"name":"MythoMax 13B","limit":{"context":8192,"output":3686},"cost":{"input":0.08,"output":0.11},"updated":"2023-07-02"},"moonshotai/kimi-k2-thinking":{"name":"Kimi K2 Thinking","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"updated":"2025-11-06"},"moonshotai/kimi-k2.5":{"name":"Kimi K2.5","limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.15},"updated":"2026-01"},"moonshotai/kimi-k2":{"name":"Kimi K2 0711","limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3},"updated":"2025-07-11"},"moonshotai/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":235929},"cost":{"input":0.6712,"output":3.35,"cache_read":0.18},"updated":"2026-06-12"},"moonshotai/kimi-k2-0905":{"name":"Kimi K2 Instruct 0905","limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"updated":"2025-09-05"},"moonshotai/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":235929},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"updated":"2026-04-21"},"moonshotai/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":943718},"cost":{"input":0.239,"output":11.936,"cache_read":0.21},"updated":"2026-07-16"},"anthropic/claude-sonnet-4.5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2025-09-29"},"anthropic/claude-opus-4.1":{"name":"Claude Opus 4.1 (latest)","limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"updated":"2025-08-05"},"anthropic/claude-fable-5":{"name":"Claude Fable 5","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"updated":"2026-06-09"},"anthropic/claude-haiku-5.5":{"name":"Claude Haiku 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"updated":"2026-10-07"},"anthropic/claude-opus-5":{"name":"Claude Opus 5","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-07-24"},"anthropic/claude-opus-4.5":{"name":"Claude Opus 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2025-11-24"},"anthropic/claude-opus-4.7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-04-16"},"anthropic/claude-opus-4.6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-03-13"},"anthropic/claude-fable-5.1":{"name":"Claude Fable 5.1","limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"updated":"2026-09-01"},"anthropic/claude-sonnet-4.6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"updated":"2026-03-13"},"anthropic/claude-haiku-4.5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"updated":"2025-10-15"},"anthropic/claude-opus-5.5":{"name":"Claude Opus 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"updated":"2026-09-22"},"anthropic/claude-sonnet-5.5":{"name":"Claude Sonnet 5.5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"updated":"2026-09-28"},"anthropic/claude-sonnet-5":{"name":"Claude Sonnet 5","limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"updated":"2026-06-30"},"anthropic/claude-opus-4.8":{"name":"Claude Opus 4.8","limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"updated":"2026-05-28"},"xiaomi/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1050000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"xiaomi/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"xiaomi/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1050000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-04-22"},"xiaomi/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"name":"MiMo-V2.6-Pro-UltraSpeed","limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"updated":"2026-09-21"},"mancer/weaver":{"name":"Weaver (alpha)","limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75},"updated":"2023-08-02"},"google/gemini-3.1-flash-image":{"name":"Nano Banana 2","limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"updated":"2026-05-28"},"google/gemma-3-27b-it":{"name":"Gemma 3 27B IT","limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.35,"cache_read":0.04},"updated":"2025-03-12"},"google/gemini-3.1-flash-lite":{"name":"Gemini 3.1 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-05-07"},"google/gemma-4-26b-a4b-it:free":{"name":"Gemma 4 26B A4B (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"google/gemma-2-27b-it":{"name":"Gemma 2 27B","limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65},"updated":"2024-07-13"},"google/lyria-3-pro-preview":{"name":"Lyria 3 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"google/gemini-3-pro-image":{"name":"Nano Banana Pro","limit":{"context":131072,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-05-28"},"google/gemini-nano-banana-2.1":{"name":"Nano Banana 2.1","limit":{"context":65536,"output":58982},"cost":{"input":1.5,"output":7.5},"updated":"2026-10-06"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333,"reasoning":3},"updated":"2025-12-17"},"google/gemma-4-26b-a4b-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":235929},"cost":{"input":0.09,"output":0.3,"cache_read":0.05},"updated":"2026-04-02"},"google/gemma-3-4b-it":{"name":"Gemma 3 4B IT","limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.1},"updated":"2025-03-12"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.083333,"reasoning":0.4},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-preview":{"name":"Gemini 3.1 Flash Lite Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.083333,"reasoning":1.5},"updated":"2026-03-03"},"google/gemini-3.1-pro-preview":{"name":"Gemini 3.1 Pro Preview","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"google/gemini-3.5-flash-lite":{"name":"Gemini 3.5 Flash Lite","limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333,"reasoning":2.5},"updated":"2026-07-21"},"google/gemini-3-pro-image-preview":{"name":"Nano Banana Pro Preview","limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2025-11-20"},"google/gemini-3.7-flash":{"name":"Gemini 3.7 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-08-13"},"google/gemini-3.1-pro-preview-customtools":{"name":"Gemini 3.1 Pro Preview Custom Tools","limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375,"reasoning":12},"updated":"2026-02-19"},"google/gemma-4-31b-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":16384},"cost":{"input":0.2,"output":0.4},"updated":"2026-04-02"},"google/gemini-3.6-flash":{"name":"Gemini 3.6 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667,"reasoning":3.75},"updated":"2026-07-21"},"google/gemini-2.5-pro-preview":{"name":"Gemini 2.5 Pro Preview 06-05","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375,"reasoning":10},"updated":"2025-06-05"},"google/gemini-3.1-flash-image-preview":{"name":"Nano Banana 2 Preview","limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3},"updated":"2026-02-26"},"google/lyria-3-clip-preview":{"name":"Lyria 3 Clip Preview","limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"updated":"2026-03-25"},"google/gemini-3.8-flash":{"name":"Gemini 3.8 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825,"cache_write":0.041667,"reasoning":4.125},"updated":"2026-09-02"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375,"reasoning":10},"updated":"2025-06-17"},"google/gemini-3.1-flash-lite-image":{"name":"Nano Banana 2 Lite","limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5},"updated":"2026-06-30"},"google/gemini-3.5-flash":{"name":"Gemini 3.5 Flash","limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333,"reasoning":9},"updated":"2026-05-19"},"google/gemma-3-12b-it":{"name":"Gemma 3 12B IT","limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.15},"updated":"2025-03-12"},"google/gemini-4-argon":{"name":"Gemini 4 Argon","limit":{"context":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":0.1875,"reasoning":10},"updated":"2026-10-13"},"google/gemma-4-31b-it:free":{"name":"Gemma 4 31B (free)","limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"updated":"2026-04-02"},"google/gemini-2.5-flash-image":{"name":"Nano Banana","limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"updated":"2025-08-26"},"perceptron/perceptron-mk1":{"name":"Perceptron Mk1","limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5},"updated":"2026-05-12"},"perceptron/perceptron-mk1.5":{"name":"Perceptron Mk1.5","limit":{"context":36864,"output":8192},"cost":{"input":0.15,"output":1.5},"updated":"2026-09-25"},"morph/morph-v3-fast":{"name":"Morph V3 Fast","limit":{"context":262144,"output":131072},"cost":{"input":0.8,"output":1.2},"updated":"2025-07-07"},"morph/morph-v3-large":{"name":"Morph V3 Large","limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9},"updated":"2025-07-07"},"bytedance/ui-tars-1.5-7b":{"name":"UI-TARS 7B ","limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1},"updated":"2025-07-22"},"~z-ai/glm-latest":{"name":"GLM Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.053,"output":6,"cache_read":0.033},"updated":"2026-08-19"},"~z-ai/glm-flash-latest":{"name":"GLM Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.048,"output":0.16,"cache_read":0.006},"updated":"2026-08-27"},"~deepseek/deepseek-flash-latest":{"name":"DeepSeek Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.043,"output":0.6,"cache_read":0.005},"updated":"2026-09-14"},"~deepseek/deepseek-pro-latest":{"name":"DeepSeek Pro Latest","limit":{"context":1048576,"output":393216},"cost":{"input":0.1307,"output":8,"cache_read":0.13},"updated":"2026-09-14"},"~deepseek/deepseek-v4-flash-latest":{"name":"DeepSeek V4 Flash Latest","limit":{"context":1048576,"output":943718},"cost":{"input":0.00912,"output":0.12,"cache_read":0.003304},"updated":"2026-08-01"},"upstage/solar-pro-3":{"name":"Solar Pro 3","limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-01-27"},"upstage/solar-pro4":{"name":"Solar Pro 4","limit":{"context":524288,"output":131072},"cost":{"input":0.09,"output":0.36,"cache_read":0.018},"updated":"2026-08-10"},"upstage/solar-mini4":{"name":"Solar Mini 4","limit":{"context":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005},"updated":"2026-09-23"},"undi95/remm-slerp-l2-13b":{"name":"ReMM SLERP 13B","limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65},"updated":"2023-07-22"},"ibm-granite/granite-4.2-8b":{"name":"Granite 4.2 8B","limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015},"updated":"2026-08-31"},"ibm-granite/granite-4.0-h-micro":{"name":"Granite 4.0 Micro","limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112},"updated":"2025-10-20"},"z-ai/glm-5.3-flash":{"name":"GLM-5.3-Flash","limit":{"context":1048576,"output":943718},"cost":{"input":0.048,"output":0.16,"cache_read":0.006},"updated":"2026-08-26"},"z-ai/glm-5.3":{"name":"GLM-5.3","limit":{"context":1048576,"output":943718},"cost":{"input":0.079,"output":1.4,"cache_read":0.078},"updated":"2026-08-14"},"z-ai/glm-5v-turbo":{"name":"GLM-5V-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-04-01"},"z-ai/glm-5.3-prime":{"name":"GLM 5.3 Prime","limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"updated":"2026-09-23"},"z-ai/glm-5.2":{"name":"GLM-5.2","limit":{"context":1048576,"output":943718},"cost":{"input":0.62,"output":2.42,"cache_read":0.14},"updated":"2026-06-13"},"z-ai/glm-4.7":{"name":"GLM-4.7","limit":{"context":204800,"output":131072},"cost":{"input":0.54,"output":1.98,"cache_read":0.099},"updated":"2025-12-22"},"z-ai/glm-4.6v":{"name":"GLM-4.6V","limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"updated":"2025-12-08"},"z-ai/glm-5.1":{"name":"GLM-5.1","limit":{"context":204800,"output":128000},"cost":{"input":0.966,"output":3.036,"cache_read":0.1794},"updated":"2026-04-07"},"z-ai/glm-5-turbo":{"name":"GLM-5-Turbo","limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"updated":"2026-03-16"},"z-ai/glm-5.3-flashx":{"name":"GLM 5.3 FlashX","limit":{"context":1048576,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.09},"updated":"2026-09-18"},"z-ai/glm-4.6":{"name":"GLM-4.6","limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"updated":"2025-09-30"},"z-ai/glm-4.5-air":{"name":"GLM-4.5-Air","limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"updated":"2025-07-28"},"z-ai/glm-4.5v":{"name":"GLM-4.5V","limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"updated":"2025-08-11"},"z-ai/glm-5":{"name":"GLM-5","limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"updated":"2026-02-12"},"z-ai/glm-4.7-flash":{"name":"GLM-4.7-Flash","limit":{"context":200000,"output":117964},"cost":{"input":0.0605,"output":0.4},"updated":"2026-01-19"},"z-ai/glm-4.5":{"name":"GLM-4.5","limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"updated":"2025-07-28"},"rekaai/reka-edge":{"name":"Reka Edge","limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1},"updated":"2026-03-20"},"rekaai/reka-flash-3":{"name":"Reka Flash 3","limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2},"updated":"2025-03-12"},"tencent/hy3-preview":{"name":"Hy3 preview","limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06},"updated":"2026-04-20"},"tencent/hy-mt2-1.8b":{"name":"Hy-MT2-1.8B","limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177},"updated":"2026-08-20"},"tencent/hy4-preview":{"name":"Hy4 preview","limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"updated":"2026-08-28"},"tencent/hy-mt2-7b":{"name":"Hy-MT2-7B","limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295},"updated":"2026-08-19"},"tencent/hunyuan-a13b-instruct":{"name":"Hunyuan A13B Instruct","limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57},"updated":"2025-07-08"},"tencent/hy3":{"name":"Hy3","limit":{"context":262144,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"tencent/hy-mt2-30b-a3b":{"name":"Hy-MT2-30B-A3B","limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295},"updated":"2026-08-20"},"elorian/glimpse":{"name":"Glimpse","limit":{"context":262144,"output":256000},"cost":{"input":0.6,"output":3,"cache_read":0.06},"updated":"2026-10-17"},"qwen/qwen3.5-397b-a17b":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":3.6,"cache_read":0.3},"updated":"2026-02-15"},"qwen/qwen3-vl-8b-instruct":{"name":"Qwen3 VL 8B Instruct","limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":0.75,"cache_read":0.12},"updated":"2025-10-14"},"qwen/qwen3.5-plus-02-15":{"name":"Qwen3.5 Plus 2026-02-15","limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56},"updated":"2026-02-16"},"qwen/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"updated":"2026-06-02"},"qwen/qwen3-vl-30b-a3b-thinking":{"name":"Qwen3 VL 30B A3B Thinking","limit":{"context":262144,"output":235929},"cost":{"input":0.29,"output":1},"updated":"2025-10-06"},"qwen/qwen3.8-flash":{"name":"Qwen3.8 Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-08-26"},"qwen/qwen3.5-plus-20260420":{"name":"Qwen3.5 Plus 2026-04-20","limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375},"updated":"2026-04-27"},"qwen/qwen-plus":{"name":"Qwen Plus","limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325},"updated":"2025-09-11"},"qwen/qwen3-30b-a3b-instruct-2507":{"name":"Qwen3 30B A3B Instruct 2507","limit":{"context":262144,"output":235929},"cost":{"input":0.09,"output":0.3},"updated":"2025-07-29"},"qwen/qwen3.5-122b-a10b":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.08},"updated":"2026-02-23"},"qwen/qwen3-next-80b-a3b-instruct":{"name":"Qwen3-Next 80B-A3B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":1.1},"updated":"2025-09"},"qwen/qwen3-coder-next":{"name":"Qwen3 Coder Next","limit":{"context":262144,"output":235929},"cost":{"input":0.12,"output":0.8,"cache_read":0.07},"updated":"2026-02-03"},"qwen/qwen3-next-80b-a3b-thinking":{"name":"Qwen3-Next 80B-A3B (Thinking)","limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1.2},"updated":"2025-09"},"qwen/qwen3-coder":{"name":"Qwen3 Coder 480B A35B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.1},"updated":"2025-07-23"},"qwen/qwen3-vl-30b-a3b-instruct":{"name":"Qwen3 VL 30B A3B Instruct","limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.6},"updated":"2025-10-04"},"qwen/qwen3.8-2.4t-a95b":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"qwen/qwen3.6-35b-a3b":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1,"cache_read":0.05},"updated":"2026-04-17"},"qwen/qwen2.5-vl-72b-instruct":{"name":"Qwen2.5 VL 72B Instruct","limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4},"updated":"2025-02-01"},"qwen/qwen3-vl-235b-a22b-instruct":{"name":"Qwen3 VL 235B A22B Instruct","limit":{"context":262144,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.1},"updated":"2025-09-23"},"qwen/qwen3.5-27b":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.27,"output":2.16,"cache_read":0.27},"updated":"2026-02-23"},"qwen/qwen3.6-27b":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2,"cache_read":0.025},"updated":"2026-04-22"},"qwen/qwen3.8-max-0902":{"name":"Qwen3.8 Max 0902","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-09-02"},"qwen/qwen-2.5-7b-instruct":{"name":"Qwen2.5 7B Instruct","limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2},"updated":"2024-10-16"},"qwen/qwen3-32b":{"name":"Qwen3 32B","limit":{"context":131072,"output":16384},"cost":{"input":0.08,"output":0.28},"updated":"2025-04"},"qwen/qwen3-30b-a3b":{"name":"Qwen3 30B A3B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"updated":"2025-04-28"},"qwen/qwen3.6-flash":{"name":"Qwen3.6 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"updated":"2026-04-27"},"qwen/qwen3-coder-30b-a3b-instruct":{"name":"Qwen3-Coder 30B-A3B Instruct","limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.28},"updated":"2025-04"},"qwen/qwen3.8-27b":{"name":"Qwen3.8 27B","limit":{"context":1000000,"output":235929},"cost":{"input":0.24,"output":2.2,"cache_read":0.05},"updated":"2026-08-14"},"qwen/qwen3.7-flash":{"name":"Qwen3.7 Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"updated":"2026-07-15"},"qwen/qwen-2.5-coder-32b-instruct":{"name":"Qwen2.5 Coder 32B Instruct","limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1},"updated":"2024-11-11"},"qwen/qwen3.8-omni-flash":{"name":"Qwen3.8 Omni Flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"updated":"2026-09-17"},"qwen/qwen3.5-9b":{"name":"Qwen3.5 9B","limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.15},"updated":"2026-02-23"},"qwen/qwen3.8-max-prime":{"name":"Qwen 3.8 Max Prime","limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"updated":"2026-09-23"},"qwen/qwen3-14b":{"name":"Qwen3 14B","limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24},"updated":"2025-04-28"},"qwen/qwen3.6-plus":{"name":"Qwen3.6 Plus","limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625},"updated":"2026-04-02"},"qwen/qwen3.5-35b-a3b":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1,"cache_read":0.05},"updated":"2026-02-23"},"qwen/qwen3-coder-flash":{"name":"Qwen3 Coder Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375},"updated":"2025-07-28"},"qwen/qwen3-235b-a22b-thinking-2507":{"name":"Qwen3 235B A22B Thinking 2507","limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5},"updated":"2025-07-25"},"qwen/qwen3.5-flash-02-23":{"name":"Qwen3.5-Flash","limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26},"updated":"2026-02-25"},"qwen/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":131072},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"updated":"2026-05-21"},"qwen/qwen3-235b-a22b-2507":{"name":"Qwen3 235B A22B Instruct 2507","limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"updated":"2025-07-21"},"qwen/qwen-2.5-72b-instruct":{"name":"Qwen2.5 72B Instruct","limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4},"updated":"2024-09-19"},"mistralai/ministral-8b-2512":{"name":"Ministral 3 8B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"updated":"2025-12-02"},"mistralai/ministral-14b-2512":{"name":"Ministral 3 14B 2512","limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"updated":"2025-12-02"},"mistralai/mixtral-8x22b-instruct":{"name":"Mixtral 8x22B Instruct","limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-04-17"},"mistralai/mistral-small-3.1-24b-instruct":{"name":"Mistral Small 3.1 24B","limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555},"updated":"2025-03-17"},"mistralai/mistral-nemo":{"name":"Mistral Nemo","limit":{"context":131072,"output":16384},"cost":{"input":0.029,"output":0.03},"updated":"2024-07-01"},"mistralai/mistral-large-4-0":{"name":"Mistral Large 4","limit":{"context":1048576,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"updated":"2026-10-06"},"mistralai/voxtral-small-24b-2507":{"name":"Voxtral Small 24B 2507","limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"updated":"2025-07-15"},"mistralai/mistral-saba":{"name":"Saba","limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02},"updated":"2025-02-17"},"mistralai/ministral-3b-2512":{"name":"Ministral 3 3B 2512","limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01},"updated":"2025-12-02"},"mistralai/mistral-small-24b-instruct-2501":{"name":"Mistral Small 3","limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08},"updated":"2025-01-30"},"mistralai/mistral-small-2603":{"name":"Mistral Small 4","limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"updated":"2026-03-16"},"mistralai/codestral-2508":{"name":"Codestral 25.08","limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"updated":"2025-07-30"},"mistralai/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"updated":"2025-12-02"},"mistralai/mistral-small-3.2-24b-instruct":{"name":"Mistral Small 3.2 24B","limit":{"context":256000,"output":16384},"cost":{"input":0.09375,"output":0.25},"updated":"2025-06-20"},"mistralai/mistral-large":{"name":"Mistral Large","limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-02-26"},"mistralai/devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-12-09"},"mistralai/mistral-medium-3-5":{"name":"Mistral Medium 3.5","limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5},"updated":"2026-04-30"},"mistralai/mistral-medium-3.1":{"name":"Mistral Medium 3.1","limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-08-13"},"mistralai/mistral-medium-3":{"name":"Mistral Medium 3","limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04},"updated":"2025-05-07"},"mistralai/mistral-large-2407":{"name":"Mistral Large 2407","limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2},"updated":"2024-11-19"},"thinkingmachines/inkling-small:free":{"name":"Inkling Small (free)","limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-07-30"},"thinkingmachines/inkling":{"name":"Inkling","limit":{"context":524288,"output":471859},"cost":{"input":1,"output":4.05,"cache_read":0.17},"updated":"2026-07-15"},"thinkingmachines/inkling:free":{"name":"Inkling (free)","limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"updated":"2026-07-15"},"thinkingmachines/inkling-small":{"name":"Inkling Small","limit":{"context":524288,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"updated":"2026-07-30"},"microsoft/phi-4":{"name":"Phi 4","limit":{"context":16384,"output":14745},"cost":{"input":0.07,"output":0.14},"updated":"2025-01-10"},"nousresearch/hermes-4-405b":{"name":"Hermes 4 405B","limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3},"updated":"2025-08-26"},"nousresearch/hermes-3-llama-3.1-70b":{"name":"Hermes 3 70B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7},"updated":"2024-08-18"},"nousresearch/hermes-3-llama-3.1-405b":{"name":"Hermes 3 405B Instruct","limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1},"updated":"2024-08-16"},"openrouter/auto":{"name":"Auto Router","limit":{"context":2000000,"output":2000000},"updated":"2023-11-08"},"openrouter/free":{"name":"Free Models Router","limit":{"context":200000,"output":8000},"cost":{"input":0,"output":0},"updated":"2026-02-01"},"openrouter/pareto-code":{"name":"Pareto Code Router","limit":{"context":2000000,"output":200000},"updated":"2026-04-21"},"openrouter/fusion":{"name":"Fusion","limit":{"context":1000000,"output":128000},"updated":"2026-06-13"},"openrouter/bodybuilder":{"name":"Body Builder (beta)","limit":{"context":128000,"output":128000},"updated":"2025-12-05"},"xingchen-agi/xing4.0-29b-a4b:free":{"name":"Xing4.0 29B A4B (free)","limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"updated":"2026-10-16"},"scaledown/summarize":{"name":"Summarize","limit":{"context":1000000,"output":4000},"cost":{"input":0.04,"output":0},"updated":"2026-10-13"},"scaledown/extract":{"name":"Extract","limit":{"context":1000000,"output":900000},"cost":{"input":0.04,"output":0},"updated":"2026-10-13"},"liquid/lfm-2.5-2.6b:free":{"name":"LFM2.5-2.6B (free)","limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0},"updated":"2026-08-11"},"liquid/lfm-2.5-24b-a2b":{"name":"LFM2.5-24B-A2B","limit":{"context":128000,"output":8192},"cost":{"input":0.05,"output":0.7,"cache_read":0.025},"updated":"2026-10-13"},"dots-studio/dots-3-note-preview:free":{"name":"Dots3-Note Preview (free)","limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0},"updated":"2026-08-14"}}},"cline-pass":{"name":"ClinePass","npm":"@ai-sdk/openai-compatible","models":{"cline-pass/glm-5.3-flash":{"name":"cline-pass/glm-5.3-flash","limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"updated":"2026-08-26"},"cline-pass/qwen3.7-plus":{"name":"Qwen3.7 Plus","limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5},"updated":"2026-06-02"},"cline-pass/glm-5.3":{"name":"GLM-5.3","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"cline-pass/mimo-v2.6-pro":{"name":"MiMo-V2.6-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"updated":"2026-09-22"},"cline-pass/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145},"updated":"2026-04-24"},"cline-pass/deepseek-v4.1-flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"updated":"2026-09-10"},"cline-pass/glm-5.2":{"name":"GLM-5.2","limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-06-13"},"cline-pass/kimi-k2.7-code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"updated":"2026-06-12"},"cline-pass/mimo-v2.6-flash":{"name":"MiMo-V2.6-Flash","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-09-22"},"cline-pass/kimi-k2.6":{"name":"Kimi K2.6","limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"updated":"2026-04-21"},"cline-pass/mimo-v2.5-pro":{"name":"MiMo-V2.5-Pro","limit":{"context":1048576,"output":131072},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145},"updated":"2026-04-22"},"cline-pass/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-24"},"cline-pass/qwen3.8-max":{"name":"Qwen3.8 Max","limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"updated":"2026-08-03"},"cline-pass/mimo-v2.5":{"name":"MiMo-V2.5","limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"updated":"2026-04-22"},"cline-pass/kimi-k3":{"name":"Kimi K3","limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"updated":"2026-07-16"},"cline-pass/minimax-m3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"cline-pass/qwen3.7-max":{"name":"Qwen3.7 Max","limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"updated":"2026-05-21"},"cline-pass/muse-spark-1.3-contributor":{"name":"Muse Spark 1.3 Contributor","limit":{"context":1048576,"output":131072},"updated":"2026-09-02"}}},"synthetic":{"name":"Synthetic","npm":"@ai-sdk/openai-compatible","models":{"hf:openai/gpt-oss-120b":{"name":"GPT OSS 120B","limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1},"updated":"2025-08-05"},"hf:zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":524288,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"updated":"2026-06-13"},"hf:zai-org/GLM-4.7-Flash":{"name":"GLM-4.7-Flash","limit":{"context":196608,"output":65536},"cost":{"input":0.1,"output":0.5,"cache_read":0.1},"updated":"2026-01-19"},"hf:zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":524288,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"updated":"2026-08-14"},"hf:zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":524288,"output":65536},"cost":{"input":0.15,"output":0.5,"cache_read":0.04},"updated":"2026-08-26"},"hf:moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.95},"updated":"2026-06-12"},"hf:moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":524288,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.45},"updated":"2026-07-27"},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{"name":"Nemotron 3 Super 120B A12B","limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.3},"updated":"2026-03-11"},"hf:deepseek-ai/DeepSeek-V4.1-Flash":{"name":"DeepSeek V4.1 Flash","limit":{"context":524288,"output":65536},"cost":{"input":0.6,"output":1.2,"cache_read":0.03},"updated":"2026-09-10"},"hf:Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.6,"cache_read":0.45},"updated":"2026-04-22"},"hf:MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":524288,"output":65536},"cost":{"input":0.6,"output":1.2,"cache_read":0.6},"updated":"2026-06-12"}}},"siliconflow":{"name":"SiliconFlow","npm":"@ai-sdk/openai-compatible","models":{"inclusionAI/Ling-flash-2.0":{"name":"inclusionAI/Ling-flash-2.0","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"nex-agi/Nex-N2-Pro":{"name":"Nex-N2-Pro","limit":{"context":262144,"output":256000},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"updated":"2026-06-02"},"zai-org/GLM-5V-Turbo":{"name":"zai-org/GLM-5V-Turbo","limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"updated":"2026-04-01"},"zai-org/GLM-5.1":{"name":"zai-org/GLM-5.1","limit":{"context":205000,"output":131000},"cost":{"input":1.19,"output":3.74,"cache_read":0.6,"cache_write":0},"updated":"2026-04-08"},"zai-org/GLM-5":{"name":"zai-org/GLM-5","limit":{"context":205000,"output":205000},"cost":{"input":0.95,"output":2.55,"cache_read":0.2},"updated":"2026-06-15"},"zai-org/GLM-5.2":{"name":"GLM-5.2","limit":{"context":1049000,"output":262000},"cost":{"input":1.302,"output":4.092,"cache_read":0.26,"cache_write":0},"updated":"2026-06-13"},"zai-org/GLM-4.5-Air":{"name":"zai-org/GLM-4.5-Air","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86},"updated":"2025-11-25"},"zai-org/GLM-5.3":{"name":"GLM-5.3","limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"updated":"2026-08-14"},"zai-org/GLM-5.3-Flash":{"name":"GLM-5.3-Flash","limit":{"context":1049000,"output":262000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"updated":"2026-08-26"},"openai/gpt-oss-20b":{"name":"openai/gpt-oss-20b","limit":{"context":131000,"output":8000},"cost":{"input":0.04,"output":0.18},"updated":"2025-11-25"},"openai/gpt-oss-120b":{"name":"openai/gpt-oss-120b","limit":{"context":131000,"output":8000},"cost":{"input":0.05,"output":0.45},"updated":"2025-11-25"},"meituan-longcat/LongCat-2.0":{"name":"LongCat-2.0","limit":{"context":1049000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"updated":"2026-06-30"},"MiniMaxAI/MiniMax-M2.5":{"name":"MiniMaxAI/MiniMax-M2.5","limit":{"context":197000,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"updated":"2026-06-15"},"MiniMaxAI/MiniMax-M3":{"name":"MiniMax-M3","limit":{"context":1048576,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"updated":"2026-06-01"},"stepfun-ai/Step-3.5-Flash":{"name":"stepfun-ai/Step-3.5-Flash","limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3},"updated":"2026-02-11"},"Qwen/Qwen3-14B":{"name":"Qwen/Qwen3-14B","limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28},"updated":"2025-11-25"},"Qwen/Qwen3-VL-8B-Instruct":{"name":"Qwen/Qwen3-VL-8B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68},"updated":"2025-11-25"},"Qwen/Qwen3-32B":{"name":"Qwen/Qwen3-32B","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"Qwen/Qwen3.5-27B":{"name":"Qwen3.5 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":2},"updated":"2026-02-23"},"Qwen/Qwen3.6-35B-A3B":{"name":"Qwen3.6 35B-A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.6},"updated":"2026-04-17"},"Qwen/Qwen3-8B":{"name":"Qwen/Qwen3-8B","limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06},"updated":"2025-11-25"},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"name":"Qwen/Qwen3-VL-30B-A3B-Thinking","limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1},"updated":"2025-11-25"},"Qwen/Qwen2.5-7B-Instruct":{"name":"Qwen/Qwen2.5-7B-Instruct","limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05},"updated":"2025-11-25"},"Qwen/Qwen2.5-72B-Instruct":{"name":"Qwen/Qwen2.5-72B-Instruct","limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59},"updated":"2025-11-25"},"Qwen/Qwen3.8-2.4T-A95B":{"name":"Qwen3.8 2.4T A95B","limit":{"context":1049000,"output":131000},"cost":{"input":2,"output":6,"cache_read":0.25},"updated":"2026-08-12"},"Qwen/Qwen3.6-27B":{"name":"Qwen3.6 27B","limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":3.2},"updated":"2026-04-22"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"name":"Qwen/Qwen3-VL-30B-A3B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1},"updated":"2025-11-25"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"},"Qwen/Qwen3-VL-32B-Instruct":{"name":"Qwen/Qwen3-VL-32B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6},"updated":"2025-11-25"},"Qwen/Qwen3.5-397B-A17B":{"name":"Qwen3.5 397B-A17B","limit":{"context":262144,"output":262144},"cost":{"input":0.39,"output":2.34},"updated":"2026-02-15"},"Qwen/Qwen3.5-122B-A10B":{"name":"Qwen3.5 122B-A10B","limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.08},"updated":"2026-02-23"},"Qwen/Qwen3.5-9B":{"name":"Qwen/Qwen3.5-9B","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.15},"updated":"2026-04-24"},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28},"updated":"2025-11-25"},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"name":"Qwen/Qwen3-30B-A3B-Instruct-2507","limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3},"updated":"2025-11-25"},"Qwen/Qwen3-VL-32B-Thinking":{"name":"Qwen/Qwen3-VL-32B-Thinking","limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5},"updated":"2025-11-25"},"Qwen/Qwen3.5-35B-A3B":{"name":"Qwen3.5 35B-A3B","limit":{"context":262144,"output":262144},"cost":{"input":0.24,"output":1.8},"updated":"2026-02-23"},"moonshotai/Kimi-K2.7-Code":{"name":"Kimi K2.7 Code","limit":{"context":262144,"output":262144},"cost":{"input":0.85916,"output":3.8,"cache_read":0.17993},"updated":"2026-06-12"},"moonshotai/Kimi-K2.5":{"name":"moonshotai/Kimi-K2.5","limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07},"updated":"2026-01-27"},"moonshotai/Kimi-K2.6":{"name":"moonshotai/Kimi-K2.6","limit":{"context":262000,"output":262000},"cost":{"input":0.77,"output":3.4,"cache_read":0.14},"updated":"2026-06-15"},"moonshotai/Kimi-K3":{"name":"Kimi K3","limit":{"context":1048576,"output":262000},"cost":{"input":2.7,"output":13.5,"cache_read":0.27},"updated":"2026-07-16"},"ByteDance-Seed/Seed-OSS-36B-Instruct":{"name":"ByteDance-Seed/Seed-OSS-36B-Instruct","limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57},"updated":"2025-11-25"},"google/gemma-4-12B-it":{"name":"Gemma 4 12B IT","limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3},"updated":"2026-06-09"},"google/gemma-4-31B-it":{"name":"Gemma 4 31B IT","limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.4},"updated":"2026-04-02"},"google/gemma-4-26B-A4B-it":{"name":"Gemma 4 26B A4B IT","limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.4},"updated":"2026-04-02"},"tencent/Hunyuan-A13B-Instruct":{"name":"tencent/Hunyuan-A13B-Instruct","limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57},"updated":"2025-11-25"},"tencent/Hy3":{"name":"Hy3","limit":{"context":262144,"output":262144},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"updated":"2026-07-06"},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"name":"DeepSeek V4 Flash Vision Exp","limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"updated":"2026-09-01"},"deepseek-ai/DeepSeek-V3.1-Terminus":{"name":"deepseek-ai/DeepSeek-V3.1-Terminus","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V3":{"name":"deepseek-ai/DeepSeek-V3","limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"name":"DeepSeek V4 Flash 0731","limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.014},"updated":"2026-07-31"},"deepseek-ai/DeepSeek-V3.2":{"name":"deepseek-ai/DeepSeek-V3.2","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42,"cache_read":0.135},"updated":"2025-12-03"},"deepseek-ai/DeepSeek-R1":{"name":"deepseek-ai/DeepSeek-R1","limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V4-Pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"cost":{"input":1.50162,"output":3.135,"cache_read":0.135},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.28,"cache_read":0.028},"updated":"2026-04-24"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"name":"DeepSeek V4 Pro 0813","limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"updated":"2026-08-22"},"deepseek-ai/DeepSeek-V3.2-Exp":{"name":"deepseek-ai/DeepSeek-V3.2-Exp","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.41},"updated":"2025-11-25"},"deepseek-ai/DeepSeek-V3.1":{"name":"deepseek-ai/DeepSeek-V3.1","limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1},"updated":"2025-11-25"}}},"anyapi":{"name":"AnyAPI","npm":"@ai-sdk/openai-compatible","models":{"xai/grok-4.3":{"name":"Grok 4.3","limit":{"context":1000000,"output":30000},"updated":"2026-04-17"},"cohere/command-r-plus-08-2024":{"name":"Command R+","limit":{"context":128000,"output":4000},"updated":"2024-08-30"},"openai/gpt-5":{"name":"GPT-5","limit":{"context":400000,"output":128000},"updated":"2025-08-07"},"openai/o4-mini":{"name":"o4-mini","limit":{"context":200000,"output":100000},"updated":"2025-04-16"},"openai/gpt-4.1-mini":{"name":"GPT-4.1 mini","limit":{"context":1047576,"output":32768},"updated":"2025-04-14"},"openai/gpt-5.4":{"name":"GPT-5.4","limit":{"context":1050000,"output":128000},"updated":"2026-03-05"},"openai/gpt-5.2":{"name":"GPT-5.2","limit":{"context":400000,"output":128000},"updated":"2025-12-11"},"openai/gpt-5-mini":{"name":"GPT-5 Mini","limit":{"context":400000,"output":128000},"updated":"2025-08-07"},"openai/o3-mini":{"name":"o3-mini","limit":{"context":200000,"output":100000},"updated":"2025-01-29"},"openai/gpt-5.1":{"name":"GPT-5.1","limit":{"context":400000,"output":128000},"updated":"2025-11-13"},"openai/gpt-4.1":{"name":"GPT-4.1","limit":{"context":1047576,"output":32768},"updated":"2025-04-14"},"openai/o3":{"name":"o3","limit":{"context":200000,"output":100000},"updated":"2025-04-16"},"deepseek/deepseek-v4-pro":{"name":"DeepSeek V4 Pro","limit":{"context":1000000,"output":384000},"updated":"2026-04-24"},"deepseek/deepseek-r1":{"name":"DeepSeek Reasoner","limit":{"context":1000000,"output":384000},"updated":"2026-02-28"},"deepseek/deepseek-v4-flash":{"name":"DeepSeek V4 Flash","limit":{"context":1000000,"output":384000},"updated":"2026-04-24"},"deepseek/deepseek-chat":{"name":"DeepSeek Chat","limit":{"context":1000000,"output":384000},"updated":"2026-02-28"},"perplexity/sonar-pro":{"name":"Sonar Pro","limit":{"context":200000,"output":8192},"updated":"2025-09-01"},"perplexity/sonar-reasoning-pro":{"name":"Sonar Reasoning Pro","limit":{"context":128000,"output":4096},"updated":"2025-09-01"},"anthropic/claude-opus-4-7":{"name":"Claude Opus 4.7","limit":{"context":1000000,"output":128000},"updated":"2026-04-16"},"anthropic/claude-sonnet-4-6":{"name":"Claude Sonnet 4.6","limit":{"context":1000000,"output":64000},"updated":"2026-03-13"},"anthropic/claude-haiku-4-5":{"name":"Claude Haiku 4.5 (latest)","limit":{"context":200000,"output":64000},"updated":"2025-10-15"},"anthropic/claude-opus-4-6":{"name":"Claude Opus 4.6","limit":{"context":1000000,"output":128000},"updated":"2026-03-13"},"anthropic/claude-sonnet-4-5":{"name":"Claude Sonnet 4.5 (latest)","limit":{"context":200000,"output":64000},"updated":"2025-09-29"},"google/gemini-3-flash-preview":{"name":"Gemini 3 Flash Preview","limit":{"context":1048576,"output":65536},"updated":"2025-12-17"},"google/gemini-2.5-flash-lite":{"name":"Gemini 2.5 Flash-Lite","limit":{"context":1048576,"output":65536},"updated":"2025-06-17"},"google/gemini-2.5-flash":{"name":"Gemini 2.5 Flash","limit":{"context":1048576,"output":65536},"updated":"2025-06-17"},"google/gemini-3-pro-preview":{"name":"Gemini 3 Pro Preview","limit":{"context":1048576,"output":65536},"updated":"2025-11-18"},"google/gemini-2.5-pro":{"name":"Gemini 2.5 Pro","limit":{"context":1048576,"output":65536},"updated":"2025-06-17"},"mistralai/mistral-large-2512":{"name":"Mistral Large 3","limit":{"context":262144,"output":262144},"updated":"2025-12-02"},"mistralai/devstral-2512":{"name":"Devstral 2","limit":{"context":262144,"output":262144},"updated":"2025-12-09"}}}}} \ No newline at end of file diff --git a/ui-plugins/zcode-context-insight/src/shared/pricing.mjs b/ui-plugins/zcode-context-insight/src/shared/pricing.mjs new file mode 100644 index 0000000..bce381a --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/shared/pricing.mjs @@ -0,0 +1,237 @@ +/** + * Offline model catalog, price book and context-window resolution. + * + * `models.json` is a compact snapshot of https://models.dev/api.json generated at build time + * (see scripts/update-models.mjs). Nothing is fetched at runtime. ZCode's own provider config is + * preferred for context windows because it describes the exact deployment the user runs. + */ + +import modelsData from './models.json' with { type: 'json' } +import { readFileSync } from 'node:fs' + +const PROVIDERS = modelsData.providers ?? {} + +const PROVIDER_ALIASES = { + bigmodel: 'zhipuai', + 'bigmodel-api': 'zhipuai', + 'bigmodel-team-coding-plan': 'zhipuai', + 'bigmodel-individual-coding-plan': 'zhipuai', + zai: 'zhipuai', + 'zai-coding-plan': 'zhipuai', + zhipu: 'zhipuai', + zhipuai: 'zhipuai', + glm: 'zhipuai', + kimi: 'moonshotai', + moonshot: 'moonshotai', + 'moonshot-cn': 'moonshotai-cn', + 'kimi-code-plan-global': 'moonshotai', + 'kimi-code-plan-cn': 'moonshotai-cn', + deepseek: 'deepseek', + minimax: 'minimax', + 'minimax-cn': 'minimax-cn', + qwen: 'alibaba', + alibaba: 'alibaba', + dashscope: 'alibaba', + 'alibaba-cn': 'alibaba-cn', + anthropic: 'anthropic', + claude: 'anthropic', + openai: 'openai', + gpt: 'openai', + google: 'google', + gemini: 'google', + vertex: 'google-vertex', + openrouter: 'openrouter', +} + +/** Lower-case provider id without ZCode's `builtin:` / `account:` / `custom:` prefixes. */ +export function normalizeProviderId(provider) { + let value = String(provider ?? '').trim().toLowerCase() + value = value.replace(/^(builtin|account|custom|provider):/, '') + const at = value.lastIndexOf('@') + if (at >= 0) value = value.slice(0, at) + const slash = value.lastIndexOf('/') + if (slash >= 0 && value.startsWith('account:')) value = value.slice(slash + 1) + return value +} + +function providerCandidates(provider) { + const normalized = normalizeProviderId(provider) + const out = new Set() + if (normalized) out.add(normalized) + if (PROVIDER_ALIASES[normalized]) out.add(PROVIDER_ALIASES[normalized]) + if (PROVIDERS[normalized]) out.add(normalized) + return [...out] +} + +/** model id (lower-case) → candidate provider entries carrying that model. */ +const MODEL_INDEX = new Map() +function pushIndex(key, candidate) { + if (!key) return + const list = MODEL_INDEX.get(key) + if (list === undefined) MODEL_INDEX.set(key, [candidate]) + else if (!list.some((c) => c.pid === candidate.pid && c.mid === candidate.mid)) list.push(candidate) +} +for (const [pid, provider] of Object.entries(PROVIDERS)) { + for (const [mid, model] of Object.entries(provider.models ?? {})) { + const candidate = { pid, mid, model, provider } + const lower = mid.toLowerCase() + pushIndex(lower, candidate) + const parts = lower.split('-') + for (let i = 1; i < parts.length; i++) pushIndex(parts.slice(i).join('-'), candidate) + } +} + +function candidateFor(provider, model) { + const id = String(model ?? '').trim().toLowerCase() + if (!id) return null + const aliases = providerCandidates(provider) + const collect = (key) => { + const direct = MODEL_INDEX.get(key) ?? [] + if (direct.length > 0) return direct + // Prefix/suffix tolerance for deployment aliases such as `k3-256k` → `kimi-k3` and + // `deepseek-v4.1-flash` → `deepseek-flash` (exact matches always win above). + const matches = [] + for (const [indexed, candidates] of MODEL_INDEX) { + if (indexed.length < 3) continue + if (id.startsWith(indexed + '-') || indexed.startsWith(id + '-')) matches.push(...candidates) + } + return matches + } + const candidates = collect(id) + if (candidates.length === 0) return null + const preferred = candidates.filter((c) => aliases.includes(c.pid)) + const pool = preferred.length > 0 ? preferred : candidates + const exact = pool.filter((c) => c.mid.toLowerCase() === id) + if (exact.length === 1) return exact[0] + if (exact.length > 1) { + const firstParty = exact.find((c) => c.provider.npm === `@ai-sdk/${c.pid}`) + return firstParty ?? exact[0] + } + if (pool.length === 1) return pool[0] + const firstParty = pool.find((c) => c.provider.npm === `@ai-sdk/${c.pid}`) + if (firstParty) return firstParty + return pool[0] +} + +function loadCustomBook(path) { + if (!path) return null + try { + const parsed = JSON.parse(readFileSync(path, 'utf8')) + if (parsed && typeof parsed === 'object') return parsed.providers ?? parsed + } catch { + // A broken user price file falls back to the bundled book; the UI shows cost as estimated. + } + return null +} + +let customBook = null +let customBookPath = null +function customProviders(path) { + if (path === customBookPath) return customBook + customBookPath = path + customBook = loadCustomBook(path) + return customBook +} + +export function modelInfo(provider, model, priceFile = '') { + const custom = customProviders(priceFile) + let candidate = null + if (custom) { + const aliases = providerCandidates(provider) + const id = String(model ?? '').trim().toLowerCase() + for (const pid of aliases) { + const providerEntry = custom[pid] + if (!providerEntry?.models) continue + for (const [mid, entry] of Object.entries(providerEntry.models)) { + if (mid.toLowerCase() === id) { + candidate = { pid, mid, model: entry, provider: providerEntry } + break + } + } + if (candidate) break + } + } + if (!candidate) candidate = candidateFor(provider, model) + if (!candidate) return null + const { pid, mid, model: entry, provider: providerEntry } = candidate + const cost = entry?.cost + const limit = entry?.limit + const rate = + cost && typeof cost.input === 'number' && typeof cost.output === 'number' + ? { + miss: cost.input, + hit: typeof cost.cache_read === 'number' ? cost.cache_read : cost.input, + write: typeof cost.cache_write === 'number' ? cost.cache_write : cost.input, + out: cost.output, + } + : null + return { + providerId: pid, + providerName: providerEntry?.name ?? pid, + modelId: mid, + name: entry?.name ?? mid, + rate, + contextWindow: typeof limit?.context === 'number' && limit.context > 0 ? limit.context : null, + maxOutput: typeof limit?.output === 'number' && limit.output > 0 ? limit.output : null, + updated: entry?.updated ?? null, + } +} + +/** + * Resolve a model's price and window. + * `providerWindows` is the map read from ZCode's own provider config (provider/model → window). + */ +export function resolveModel(provider, model, { priceFile = '', windowOverride = 0, providerWindows = null } = {}) { + const info = modelInfo(provider, model, priceFile) + const normalizedProvider = normalizeProviderId(provider) + const key = normalizedProvider + '/' + String(model ?? '').toLowerCase() + const altKey = providerCandidates(provider) + .map((pid) => pid + '/' + String(model ?? '').toLowerCase()) + .find((candidate) => providerWindows?.has(candidate)) + const configured = + windowOverride > 0 + ? windowOverride + : (providerWindows?.get(key) ?? + (altKey ? providerWindows.get(altKey) : null) ?? + providerWindows?.get(String(model ?? '').toLowerCase()) ?? + null) + return { + ...(info ?? { + providerId: normalizedProvider, + providerName: normalizedProvider, + modelId: String(model ?? ''), + name: String(model ?? ''), + rate: null, + contextWindow: null, + maxOutput: null, + updated: null, + }), + contextWindow: configured ?? info?.contextWindow ?? null, + windowSource: configured ? 'provider-config' : info?.contextWindow ? 'models.dev' : null, + priceSource: info?.rate ? 'models.dev' : null, + } +} + +/** USD (or CNY) list-price cost for one call. */ +export function priceCall(provider, model, { input = 0, cacheRead = 0, cacheWrite = 0, output = 0 }, { priceFile = '', currency = 'usd' } = {}) { + const info = modelInfo(provider, model, priceFile) + if (!info?.rate) return null + const usd = + (Math.max(0, input - cacheRead - cacheWrite) * info.rate.miss + + Math.max(0, cacheRead) * info.rate.hit + + Math.max(0, cacheWrite) * info.rate.write + + Math.max(0, output) * info.rate.out) / + 1e6 + return currency === 'cny' ? usd / 0.15 : usd +} + +export function currencyForLocale(locale, preference = 'auto') { + if (preference === 'usd' || preference === 'cny') return preference + return String(locale ?? '').toLowerCase().startsWith('zh') ? 'cny' : 'usd' +} + +export const catalogMeta = { + source: modelsData.source, + generatedAt: modelsData.generatedAt, + providers: Object.keys(PROVIDERS).length, +} diff --git a/ui-plugins/zcode-context-insight/src/worker.mjs b/ui-plugins/zcode-context-insight/src/worker.mjs new file mode 100644 index 0000000..e729152 --- /dev/null +++ b/ui-plugins/zcode-context-insight/src/worker.mjs @@ -0,0 +1,76 @@ +/** + * Worker owning the read-only database connection and the session cache. + * stdout is reserved for the MCP protocol, so worker errors go back as structured messages. + */ + +import { parentPort, workerData } from 'node:worker_threads' +import { createService } from './service.mjs' + +const paths = workerData?.paths +let service = null +let closed = false + +function getService() { + if (service === null) service = createService(paths) + return service +} + +async function handle(method, sessionId, args) { + const svc = getService() + switch (method) { + case 'snapshot': + return svc.snapshot(sessionId, args) + case 'history': + return svc.history(sessionId, args) + case 'step': + return svc.step(sessionId, args.step, args) + case 'group': + return svc.group(sessionId, args.step, args.cat, args) + case 'dna': + return svc.dna(sessionId, args.step, args) + case 'dnaSeries': + return svc.dnaSeries(sessionId, args) + case 'element': + return svc.element(sessionId, args.step, args.key, args) + case 'eventDetail': + return svc.eventDetail(sessionId, args.eventId, args) + case 'fleet': + return svc.fleet(sessionId, args) + case 'fleetMember': + return svc.fleetMember(sessionId, args.targetId, args) + case 'insights': + return svc.insights(args) + case 'preferencesGet': + return svc.preferencesGet() + case 'preferencesSet': + return svc.preferencesSet(args.patch) + case 'report': + return svc.report(sessionId) + default: + throw Object.assign(new Error('Unknown read method.'), { code: 'unknown_method' }) + } +} + +parentPort?.on('message', async (message) => { + if (message?.cancel) return + const { id, method, sessionId, args } = message ?? {} + try { + const result = await handle(method, sessionId, args ?? {}) + parentPort.postMessage({ id, result }) + } catch (error) { + parentPort.postMessage({ + id, + error: { + code: typeof error?.code === 'string' ? error.code : 'read_failed', + message: typeof error?.message === 'string' ? error.message : 'Read failed.', + }, + }) + } +}) + +process.on('exit', () => { + if (!closed) { + closed = true + service?.close?.() + } +}) diff --git a/ui-plugins/zcode-context-insight/test/domain.test.mjs b/ui-plugins/zcode-context-insight/test/domain.test.mjs new file mode 100644 index 0000000..4e64fb1 --- /dev/null +++ b/ui-plugins/zcode-context-insight/test/domain.test.mjs @@ -0,0 +1,227 @@ +import assert from 'node:assert/strict' +import test from 'node:test' +import { buildFileOps, fileActivity } from '../src/domain/files.mjs' +import { buildDnaSeries, buildSessionView, buildStepDetail } from '../src/domain/compose.mjs' + +function message(id, sequence, role, kind, extra = {}) { + return { + id, + sequence, + time_created: 1000 + sequence * 100, + time_updated: 1050 + sequence * 100, + role, + kind, + origin: role === 'user' ? 'real_user' : 'agent_runtime', + source: null, + visibility: 'visible', + synthetic: 0, + summary_title: null, + summary_chars: 0, + summary_preview: null, + metadata_source: null, + ...extra, + } +} + +function part(id, messageId, sequence, fields) { + return { + id, + message_id: messageId, + sequence, + time_created: 1000 + sequence * 100, + time_updated: 1020 + sequence * 100, + type: 'text', + tool: null, + call_id: null, + status: null, + tool_start: null, + tool_end: null, + text_chars: 0, + text_preview: null, + input_chars: 0, + input_sample: null, + output_chars: 0, + output_preview: null, + ...fields, + } +} + +function fixture() { + const messages = [ + message('m1', 1, 'user', 'user_prompt'), + message('m2', 2, 'user', 'system_reminder', { synthetic: 1, origin: 'agent_runtime', source: 'todo_reminder' }), + message('m3', 3, 'assistant', 'assistant_response'), + message('m4', 4, 'assistant', 'assistant_response'), + ] + const parts = [ + part('p1', 'm1', 1, { type: 'text', text_chars: 60, text_preview: 'Please inspect the context panel.' }), + part('p2', 'm2', 2, { type: 'text', text_chars: 40, text_preview: 'The TodoWrite tool has not been used recently.' }), + part('p3', 'm3', 3, { type: 'text', text_chars: 20, text_preview: 'I will read the file.' }), + part('p4', 'm3', 4, { + type: 'tool', tool: 'Read', call_id: 'call_read', status: 'completed', tool_start: 1200, tool_end: 1250, + input_chars: 30, input_sample: '{"file_path":"src/a.ts"}', output_chars: 120, output_preview: '1\tconst a = 1', + output_lines: 12, file_path: 'src/a.ts', read_path: 'src/a.ts', read_offset: 1, + }), + part('p5', 'm4', 5, { + type: 'tool', tool: 'Edit', call_id: 'call_edit', status: 'completed', tool_start: 1300, tool_end: 1350, + input_chars: 40, input_sample: '{"file_path":"src/a.ts"}', output_chars: 40, output_preview: 'updated', + file_path: 'src/a.ts', additions: 3, deletions: 1, + }), + part('p6', 'm4', 6, { + type: 'tool', tool: 'Bash', call_id: 'call_bash', status: 'completed', tool_start: 1350, tool_end: 1360, + input_chars: 30, input_sample: '{"command":"cat src/a.ts"}', output_chars: 50, output_preview: 'const a = 1', + command: 'cat src/a.ts', + }), + ] + const messageMap = new Map(messages.map((entry) => [entry.id, entry])) + const byMessage = new Map() + for (const entry of parts) { + const list = byMessage.get(entry.message_id) ?? [] + list.push(entry) + byMessage.set(entry.message_id, list) + } + return { messages, parts, messageMap, byMessage, branch: null } +} + +const session = { + id: 'sess_test', + title: 'Fixture session', + directory: '/workspace', + project_id: 'project', + parent_id: null, + task_type: 'interactive', + time_created: 900, + time_updated: 2000, +} + +const usage = [ + { + logical_request_id: 'logical-1', attempt_index: 0, assistant_message_id: 'm3', parent_user_message_id: 'm1', + turn_id: 'turn_1', query_source: 'main_turn', provider_id: 'deepseek', model_id: 'deepseek-flash', + status: 'completed', started_at: 1000, first_token_at: 1050, completed_at: 1800, duration_ms: 800, + time_to_first_token_ms: 50, tool_call_count: 1, input_tokens: 400, output_tokens: 30, reasoning_tokens: 0, + cache_creation_input_tokens: 0, cache_read_input_tokens: 100, computed_total_tokens: 430, + }, + { + logical_request_id: 'logical-2', attempt_index: 0, assistant_message_id: 'm4', parent_user_message_id: 'm1', + turn_id: 'turn_1', query_source: 'main_turn', provider_id: 'deepseek', model_id: 'deepseek-flash', + status: 'completed', started_at: 2000, first_token_at: 2050, completed_at: 2600, duration_ms: 600, + time_to_first_token_ms: 50, tool_call_count: 2, input_tokens: 800, output_tokens: 40, reasoning_tokens: 0, + cache_creation_input_tokens: 0, cache_read_input_tokens: 400, computed_total_tokens: 840, + }, +] + +const rollout = { + available: true, + coverage: 'full', + records: [ + { + startedAt: 1000, + turnId: 'turn_1', + messagesKind: 'full', + header: { + system: [{ type: 'text', text: 'You are a fixture agent.' }], + tools: [ + { type: 'function', function: { name: 'Read', description: 'Read a file', parameters: { type: 'object' } } }, + { type: 'function', function: { name: 'mcp__fixture__search', description: 'Search', parameters: { type: 'object' } } }, + ], + maxOutputTokens: 8000, + }, + usage: null, + }, + ], +} + +test('file operations derive from Read/Edit and conservative shell paths', () => { + const conversation = fixture() + const ops = buildFileOps(conversation) + assert.deepEqual(ops.map((op) => [op.tool, op.path, op.kind]).sort(), [ + ['Bash', 'src/a.ts', 'read'], + ['Edit', 'src/a.ts', 'write'], + ['Read', 'src/a.ts', 'read'], + ]) + const activity = fileActivity(conversation, null) + assert.equal(activity.entries.length, 1) + assert.equal(activity.totals.read.ops, 2) + assert.equal(activity.totals.write.ops, 1) + assert.equal(activity.totals.added, 3) + assert.equal(activity.totals.removed, 1) +}) + +test('session view anchors composition to provider prompt tokens and builds a step brief', () => { + const view = buildSessionView({ + session, + usageRows: usage, + toolRows: [ + { tool_name: 'Read', started_at: 1200, completed_at: 1250, duration_ms: 50, tool_call_id: 'call_read' }, + { tool_name: 'Edit', started_at: 1300, completed_at: 1350, duration_ms: 50, tool_call_id: 'call_edit' }, + { tool_name: 'Bash', started_at: 1350, completed_at: 1360, duration_ms: 10, tool_call_id: 'call_bash' }, + ], + conversation: fixture(), + rollout, + preferences: { language: 'en', currency: 'usd', contextWindow: 0 }, + providerWindows: new Map([['deepseek/deepseek-flash', 100000]]), + fullRetention: true, + subagentStats: { count: 1, usage: { billed: 100 } }, + }) + assert.equal(view.stats.steps, 2) + assert.equal(view.stats.turns, 1) + assert.equal(view.stats.humanInputs, 1) + assert.equal(view.stats.toolCalls, 3) + assert.equal(view.current.prompt, 800) + assert.equal(view.current.window, 100000) + assert.ok(view.current.parts.system > 0) + assert.ok(view.current.parts.tools > 0) + assert.equal( + Object.values(view.current.parts).reduce((sum, value) => sum + value, 0), + view.current.prompt, + ) + // The selected (latest) request's own tool calls are not yet part of its prompt. + assert.equal(view.files.totals.read.ops, 1) + assert.equal(view.files.totals.write.ops, 0) + assert.equal(view.events.filter((event) => event.kind === 'inject').length, 1) + assert.equal(view.stats.subagents.count, 1) + + const detail = buildStepDetail(view, 2, { baselineMode: 'step' }) + assert.equal(detail.step, 2) + assert.ok(detail.groups.some((group) => group.cat === 'tool')) + assert.ok(detail.groups.some((group) => group.cat === 'inject')) + assert.ok(detail.diff.available) + assert.ok(detail.brief.incoming.length >= 1) + assert.ok(detail.dna.length > 0) + assert.equal(detail.files.entries[0].path, 'src/a.ts') +}) + +test('payloads stay under the host budget for a modest session', () => { + const view = buildSessionView({ + session, + usageRows: usage, + toolRows: [], + conversation: fixture(), + rollout, + preferences: {}, + providerWindows: new Map(), + fullRetention: false, + }) + assert.ok(Buffer.byteLength(JSON.stringify(view.requests)) < 64 * 1024) + assert.ok(Buffer.byteLength(JSON.stringify(view.current)) < 16 * 1024) +}) + + +test('DNA series keeps one entry per request and compresses item bands', () => { + const view = buildSessionView({ + session, + usageRows: usage, + toolRows: [], + conversation: fixture(), + rollout, + preferences: {}, + providerWindows: new Map(), + fullRetention: true, + }) + const series = buildDnaSeries(view, { fromStep: 1, toStep: 2, maxBands: 8 }) + assert.equal(series.steps.length, 2) + assert.ok(series.steps.every((entry) => entry.bands.length <= 8)) + assert.ok(series.steps[0].bands.length > 0) + assert.equal(series.categories[0], 'system') +}) diff --git a/ui-plugins/zcode-context-insight/test/estimate.test.mjs b/ui-plugins/zcode-context-insight/test/estimate.test.mjs new file mode 100644 index 0000000..5a36559 --- /dev/null +++ b/ui-plugins/zcode-context-insight/test/estimate.test.mjs @@ -0,0 +1,48 @@ +import assert from 'node:assert/strict' +import test from 'node:test' +import { + canonical, + contentKey, + estimateImageTokens, + estimateSystemContent, + estimateTokens, + formatCost, + formatDuration, + formatTokens, +} from '../src/shared/estimate.mjs' + +test('token estimator separates ASCII, CJK and other scripts', () => { + assert.equal(estimateTokens('abcd'), 1) + assert.equal(estimateTokens('你好你好'), 3) + assert.ok(estimateTokens('你好你好') > estimateTokens('abcdefgh')) + assert.equal(estimateTokens(''), 0) +}) + +test('canonical JSON is stable and cache keys are not content', () => { + assert.equal(canonical({ b: 1, a: [2, undefined] }), '{"a":[2,null],"b":1}') + assert.equal( + contentKey({ role: 'user', content: 'x', cache_control: { type: 'ephemeral' } }), + contentKey({ content: 'x', role: 'user' }), + ) +}) + +test('image calculator is bounded and deterministic', () => { + const a = estimateImageTokens(900, 482) + assert.ok(a > 0 && a <= 384) + assert.equal(a, estimateImageTokens(900, 482)) + assert.equal(estimateImageTokens(0, 100), null) +}) + +test('system content prices text blocks', () => { + assert.ok(estimateSystemContent([{ type: 'text', text: 'hello world' }]) >= 4) + assert.equal(estimateSystemContent(null), 0) +}) + +test('display formatters stay compact', () => { + assert.equal(formatTokens(1500), '1.5k') + assert.equal(formatTokens(2_000_000), '2M') + assert.equal(formatDuration(2500), '2.5s') + assert.equal(formatDuration(65_000), '1m5s') + assert.match(formatCost(0.0002, 'usd'), /^\$/) + assert.match(formatCost(0.2, 'cny'), /^¥/) +}) diff --git a/ui-plugins/zcode-context-insight/test/preferences.test.mjs b/ui-plugins/zcode-context-insight/test/preferences.test.mjs new file mode 100644 index 0000000..00a1332 --- /dev/null +++ b/ui-plugins/zcode-context-insight/test/preferences.test.mjs @@ -0,0 +1,31 @@ +import assert from 'node:assert/strict' +import { mkdtempSync, readFileSync, rmSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import test from 'node:test' +import { DEFAULT_PREFERENCES, preferencesPath, readPreferences, writePreferences } from '../src/data/preferences.mjs' + +test('preferences merge, validate enums and persist atomically', () => { + const dir = mkdtempSync(join(tmpdir(), 'zc-prefs-')) + const paths = { pluginDataDir: dir, windowOverride: 0, priceFile: '' } + try { + assert.deepEqual(readPreferences(paths), { ...DEFAULT_PREFERENCES }) + const saved = writePreferences(paths, { + defaultView: 'insights', + granularity: 'turn', + trendMode: 'nonsense', + contextWindow: 256000, + durationCurve: false, + }) + assert.equal(saved.defaultView, 'insights') + assert.equal(saved.granularity, 'turn') + assert.equal(saved.trendMode, 'total') + assert.equal(saved.contextWindow, 256000) + assert.equal(saved.durationCurve, false) + const disk = JSON.parse(readFileSync(preferencesPath(paths), 'utf8')) + assert.equal(disk.defaultView, 'insights') + assert.equal(readPreferences(paths).contextWindow, 256000) + } finally { + rmSync(dir, { recursive: true, force: true }) + } +}) diff --git a/ui-plugins/zcode-context-insight/test/session.test.mjs b/ui-plugins/zcode-context-insight/test/session.test.mjs new file mode 100644 index 0000000..374542e --- /dev/null +++ b/ui-plugins/zcode-context-insight/test/session.test.mjs @@ -0,0 +1,13 @@ +import assert from 'node:assert/strict' +import test from 'node:test' +import { readSessionContext } from '../src/domain/session.mjs' +import { ContextError } from '../src/domain/errors.mjs' + +test('session identity comes only from the host namespace', () => { + assert.deepEqual(readSessionContext({ 'com.zcode/request-context': { session_id: 'sess_abc-1' } }), { + sessionId: 'sess_abc-1', + }) + for (const meta of [undefined, null, {}, { 'com.zcode/request-context': {} }, { 'com.zcode/request-context': { session_id: '../x' } }]) { + assert.throws(() => readSessionContext(meta), (error) => error instanceof ContextError && error.code === 'binding_unavailable') + } +}) diff --git a/ui-plugins/zcode-context-insight/ui/app.mjs b/ui-plugins/zcode-context-insight/ui/app.mjs new file mode 100644 index 0000000..ad65ac1 --- /dev/null +++ b/ui-plugins/zcode-context-insight/ui/app.mjs @@ -0,0 +1,3497 @@ +/** + * zcode-context-insight panel — a single-file MCP App UI. + * + * The host binds the panel to a session; the UI never receives the session id as a URL or global. + * Every read is an app-only MCP tool call; the host attaches `com.zcode/request-context` on each + * call. Preview mode (scripts/preview.mjs) talks to the same service over a local HTTP endpoint. + */ + +import { App } from '@modelcontextprotocol/ext-apps' +import brandSvg from './icon.svg' +import { makeT } from './i18n.mjs' +import { + formatBytes, + formatCost, + formatCount, + formatDuration, + formatShare, + formatTokens, +} from '../src/shared/estimate.mjs' + +const PREVIEW = window.__ZCODE_CONTEXT_PREVIEW__ ?? null +const VERSION = '0.1.0' +const CATS = ['system', 'tools', 'user', 'inject', 'skill', 'assistant', 'tool', 'unknown'] +const CAT_COLOR = { + system: 'var(--cat-system)', + tools: 'var(--cat-tools)', + user: 'var(--cat-user)', + inject: 'var(--cat-inject)', + skill: 'var(--cat-skill)', + assistant: 'var(--cat-assistant)', + tool: 'var(--cat-tool)', + unknown: 'var(--cat-unknown)', + output: 'var(--cat-output)', + ttft: 'var(--timing-ttft)', + reasoning: 'var(--timing-reasoning)', + text: 'var(--timing-text)', + toolarg: 'var(--timing-toolarg)', + gen: 'var(--timing-reasoning)', + other: 'var(--timing-other)', +} +const TIMING_COLOR = { + ttft: 'var(--timing-ttft)', + gen: 'var(--timing-reasoning)', + reasoning: 'var(--timing-reasoning)', + text: 'var(--timing-text)', + toolarg: 'var(--timing-toolarg)', + tools: 'var(--timing-tools)', + other: 'var(--timing-other)', +} +const STATUS = ['completed', 'running', 'error', 'cancelled', 'unknown'] +const HEADER = ['exact', 'estimated', 'missing'] +const root = document.getElementById('root') + +// Direct Element.append() stringifies null/undefined; the panel builds many conditional children. +// Skipping those here keeps every conditional branch from leaving a literal "null" text node. +if (!Element.prototype.__zcAppendPatched) { + const nativeAppend = Element.prototype.append + Object.defineProperty(Element.prototype, '__zcAppendPatched', { value: true }) + Element.prototype.append = function (...nodes) { + nativeAppend.apply(this, nodes.filter((node) => node != null && node !== false)) + } +} + +const state = { + snapshot: null, + history: [], + step: null, + pinned: false, + stepDetail: null, + stepLoading: false, + stepError: null, + stepCache: new Map(), + stepToken: 0, + detailToken: 0, + dnaToken: 0, + baselineMode: 'step', + granularity: 'step', + trendMode: 'total', + durationCurve: true, + adaptive: true, + overview: false, + trendDna: false, + browserMode: 'categories', + browserSearch: '', + browserSort: 'size', + kindFilter: null, + groupExtra: new Map(), + dnaData: null, + dnaLoading: false, + dnaSeries: null, + dnaSeriesLoading: false, + expandedCats: new Set(['system', 'tools', 'user', 'inject', 'skill', 'assistant', 'tool']), + eventKinds: new Set(['inject', 'compaction', 'model', 'rewind', 'mcp', 'mode', 'prune']), + eventsAll: false, + fileKinds: new Set(['read', 'write', 'search', 'image']), + fileSearch: '', + fileSort: 'count', + filesAll: false, + expandedFiles: new Set(), + detailsView: null, + statsOpen: false, + detail: null, + detailLoading: false, + detailError: null, + settingsOpen: false, + settingsDraft: null, + fleet: null, + fleetLoading: false, + fleetError: null, + member: null, + memberLoading: false, + insights: null, + insightsLoading: false, + insightsError: null, + insightsRange: '30d', + insightsSearch: '', + insightsSort: 'recent', + insightsGroup: 'none', + insightsDay: null, + insightsCompositionLoading: false, + tab: 'context', + loading: true, + error: null, + prefs: {}, + t: makeT('en'), + lang: 'en', + theme: 'light', + toast: null, + unchanged: 0, + lastRefresh: 0, + followTimer: null, + searchTimer: null, + saveTimer: null, + hoverCat: null, +} + +let app = null +let hostContext = null +let transport = null +let pollTimer = null + +/* ------------------------------------------------------------------------------------------------ + * DOM helpers + * ---------------------------------------------------------------------------------------------- */ + +function append(parent, children) { + for (const child of children.flat(Infinity)) { + if (child == null || child === false) continue + parent.append(child instanceof Node ? child : document.createTextNode(String(child))) + } +} + +function h(tag, attrs = null, ...children) { + const el = document.createElement(tag) + if (attrs) { + for (const [key, value] of Object.entries(attrs)) { + if (value == null || value === false) continue + if (key === 'class') el.className = value + else if (key === 'dataset') Object.assign(el.dataset, value) + else if (key === 'style' && typeof value === 'object') Object.assign(el.style, value) + else if (key.startsWith('on') && typeof value === 'function') el.addEventListener(key.slice(2).toLowerCase(), value) + else if (key === 'text') el.textContent = String(value) + else if (key in el && key !== 'list' && typeof value !== 'string') el[key] = value + else if (key in el && key !== 'list' && key !== 'className') el[key] = value + else el.setAttribute(key, value === true ? '' : String(value)) + } + } + append(el, children) + return el +} + +const NS = 'http://www.w3.org/2000/svg' +function sv(tag, attrs = null, ...children) { + const el = document.createElementNS(NS, tag) + if (attrs) { + for (const [key, value] of Object.entries(attrs)) { + if (value == null || value === false) continue + if (key.startsWith('on') && typeof value === 'function') el.addEventListener(key.slice(2).toLowerCase(), value) + else el.setAttribute(key, value === true ? '' : String(value)) + } + } + append(el, children) + return el +} + +const ICON_PATHS = { + chart: 'M3 3v18h18M7 15l3-4 3 2 4-6', + refresh: 'M20 11a8 8 0 1 0-2.3 6M20 4v7h-7', + settings: 'M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7ZM19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1-2.8 2.8-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.6v.2h-4V21a1.7 1.7 0 0 0-1-1.6 1.7 1.7 0 0 0-1.9.3l-.1.1L4.2 17l.1-.1a1.7 1.7 0 0 0 .3-1.9A1.7 1.7 0 0 0 3 14H2.8v-4H3a1.7 1.7 0 0 0 1.6-1 1.7 1.7 0 0 0-.3-1.9L4.2 7 7 4.2l.1.1A1.7 1.7 0 0 0 9 4.6a1.7 1.7 0 0 0 1-1.6V2.8h4V3a1.7 1.7 0 0 0 1 1.6 1.7 1.7 0 0 0 1.9-.3l.1-.1L19.8 7l-.1.1a1.7 1.7 0 0 0-.3 1.9 1.7 1.7 0 0 0 1.6 1h.2v4H21a1.7 1.7 0 0 0-1.6 1Z', + info: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 11v6M12 7h.01', + left: 'm15 18-6-6 6-6', + right: 'm9 18 6-6-6-6', + down: 'm6 9 6 6 6-6', + copy: 'M8 8V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-3M5 8h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2Z', + close: 'M18 6 6 18M6 6l12 12', + search: 'M21 21l-4.3-4.3M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z', + pin: 'M12 17v5M5 9l7-7 7 7-3 3-1 4H9l-1-4-3-3Z', + arrow: 'M5 12h14M13 6l6 6-6 6', + check: 'm5 12 4 4L19 6', + alert: 'M12 9v4M12 17h.01M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z', + scissors: 'M6 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM20 4 8.1 15.9M14.5 14.5 20 20M8.1 8.1 12 12', + switch: 'M7 7h11l-3-3M17 17H6l3 3', + rewind: 'M3 7v6h6M3 13a9 9 0 1 0 3-7', + zap: 'm13 2-9 12h7l-1 8 9-12h-7l1-8Z', + folder: 'M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z', + branch: 'M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM18 9a9 9 0 0 1-9 9', + clock: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 6v6l4 2', + file: 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6ZM14 2v6h6', + dots: 'M5 12h.01M12 12h.01M19 12h.01', + external: 'M14 3h7v7M21 3l-9 9M19 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5', + filter: 'M3 5h18l-7 8v6l-4 2v-8L3 5Z', +} + +function icon(name, size = 15, className = '') { + return sv( + 'svg', + { + class: 'zc-icon ' + className, + width: size, + height: size, + viewBox: '0 0 24 24', + fill: 'none', + stroke: 'currentColor', + 'stroke-width': 1.8, + 'stroke-linecap': 'round', + 'stroke-linejoin': 'round', + 'aria-hidden': 'true', + }, + sv('path', { d: ICON_PATHS[name] ?? ICON_PATHS.info }), + ) +} + +function brandMark(size = 24) { + const template = document.createElement('template') + template.innerHTML = brandSvg.trim() + const svg = template.content.firstElementChild + if (!svg) return icon('chart', size) + svg.setAttribute('width', String(size)) + svg.setAttribute('height', String(size)) + svg.setAttribute('aria-hidden', 'true') + svg.classList.add('zc-icon', 'zc-brand-icon') + return svg +} + +function button(label, { onClick, class: cls = '', title, icon: iconName, active = false, disabled = false, aria } = {}) { + return h( + 'button', + { + type: 'button', + class: 'zc-btn ' + cls + (active ? ' is-active' : ''), + title: title ?? label, + 'aria-label': aria ?? title ?? label, + disabled, + onclick: onClick, + }, + iconName ? icon(iconName, 14) : null, + label ? h('span', null, label) : null, + ) +} + +function iconButton(name, title, onClick, cls = '') { + return h( + 'button', + { type: 'button', class: 'zc-iconbtn ' + cls, title, 'aria-label': title, onclick: onClick }, + icon(name, 16), + ) +} + +function pill(text, cls = '', title = null) { + return h('span', { class: 'zc-pill ' + cls, title: title ?? undefined }, text) +} + +function clearNode(node) { + while (node.firstChild) node.removeChild(node.firstChild) +} + +/* ------------------------------------------------------------------------------------------------ + * Formatting and decoding + * ---------------------------------------------------------------------------------------------- */ + +const locale = () => (state.lang === 'zh' ? 'zh-CN' : 'en-US') + +function relativeTime(ms) { + if (!Number.isFinite(ms) || ms <= 0) return state.t('common.none') + const diff = Date.now() - ms + if (diff < 60_000) return state.t('time.justNow') + if (diff < 3_600_000) return state.t('time.minute', { n: Math.floor(diff / 60_000) }) + if (diff < 86_400_000) return state.t('time.hour', { n: Math.floor(diff / 3_600_000) }) + if (diff < 7 * 86_400_000) return state.t('time.day', { n: Math.floor(diff / 86_400_000) }) + const date = new Date(ms) + return state.t('time.date', { month: date.getMonth() + 1, day: date.getDate() }) +} + +function clockTime(ms) { + if (!Number.isFinite(ms) || ms <= 0) return '' + const date = new Date(ms) + const now = new Date() + const sameDay = + date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate() + return sameDay + ? date.toLocaleTimeString(locale(), { hour: '2-digit', minute: '2-digit' }) + : date.toLocaleDateString(locale(), { month: 'short', day: 'numeric' }) + + ' ' + + date.toLocaleTimeString(locale(), { hour: '2-digit', minute: '2-digit' }) +} + +function dateKey(ms) { + const date = new Date(ms) + return ( + date.getFullYear() + + '-' + + String(date.getMonth() + 1).padStart(2, '0') + + '-' + + String(date.getDate()).padStart(2, '0') + ) +} + +function currency() { + return state.snapshot?.session?.currency ?? 'usd' +} + +function costText(value) { + if (value == null || !Number.isFinite(Number(value))) return state.t('common.none') + return formatCost(Number(value), currency()) +} + +function pct(value) { + return Number.isFinite(Number(value)) ? Number(value).toFixed(1) + '%' : state.t('common.none') +} + +function catLabel(cat) { + return state.t('cat.' + cat) +} + +function decodeRequest(raw) { + const wire = state.snapshot?.wire ?? { parts: CATS, status: STATUS, header: HEADER } + const [step, turn, time, prompt, output, cacheRead, cacheWrite, durationMs, ttftMs, toolCalls, statusCode, partValues, headerCode] = raw + const parts = {} + for (const [index, cat] of wire.parts.entries()) parts[cat] = partValues[index] ?? 0 + return { + step, + turn, + time, + prompt, + output, + cacheRead, + cacheWrite, + durationMs, + ttftMs, + toolCalls, + status: wire.status[statusCode] ?? 'unknown', + parts, + header: wire.header[headerCode] ?? 'missing', + total: prompt + output, + } +} + +function requests() { + const current = (state.snapshot?.requests ?? []).map(decodeRequest) + const older = state.history.map(decodeRequest) + return [...older, ...current].sort((a, b) => a.step - b.step) +} + +function selectedRequest() { + return requests().find((request) => request.step === state.step) ?? null +} + +function selectedStep() { + return state.step ?? state.snapshot?.current?.step ?? null +} + +function currentStep() { + return state.snapshot?.current?.step ?? state.snapshot?.requestsTotal ?? null +} + +function eventCounts() { + const counts = { inject: 0, compaction: 0, model: 0, rewind: 0, mcp: 0, mode: 0, prune: 0 } + for (const event of state.snapshot?.events ?? []) if (counts[event.kind] != null) counts[event.kind]++ + return counts +} + +function toolSourceLabel(source) { + if (!source) return '' + if (source === 'built-in') return state.t('tool.built-in') + if (source === 'plugin') return state.t('tool.plugin') + if (source.startsWith('mcp:')) return 'MCP · ' + source.slice(4) + return source +} + +/* ------------------------------------------------------------------------------------------------ + * Transport, app handshake and lifecycle + * ---------------------------------------------------------------------------------------------- */ + +class UiError extends Error { + constructor(code, message) { + super(message) + this.code = code + } +} + +async function call(name, args = {}) { + if (PREVIEW) { + const response = await fetch(PREVIEW.url, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ name, arguments: args }), + }) + const payload = await response.json() + if (payload?.error) throw new UiError(payload.error.code ?? 'read_failed', payload.error.message ?? 'Read failed.') + return payload.structuredContent ?? payload + } + const result = await app.callServerTool({ name, arguments: args }) + if (result?.isError) { + const error = result.structuredContent?.error ?? {} + throw new UiError(error.code ?? 'read_failed', error.message ?? 'Read failed.') + } + return result?.structuredContent ?? result +} + +function hostTheme() { + const raw = hostContext?.theme ?? PREVIEW?.theme + if (raw === 'dark' || raw === 'light') return raw + return window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' +} + +function hostLocale() { + return hostContext?.locale ?? PREVIEW?.locale ?? navigator.language ?? 'en-US' +} + +function applyHost() { + state.theme = hostTheme() + document.documentElement.dataset.theme = state.theme + const prefLang = state.prefs?.language + const lang = + prefLang === 'zh' || prefLang === 'en' + ? prefLang + : String(hostLocale()).toLowerCase().startsWith('zh') + ? 'zh' + : 'en' + if (lang !== state.lang) { + state.lang = lang + state.t = makeT(lang) + document.documentElement.lang = lang === 'zh' ? 'zh-CN' : 'en' + } +} + +function applyPreferences(prefs) { + state.prefs = prefs ?? {} + if (state.prefs.granularity) state.granularity = state.prefs.granularity + if (state.prefs.trendMode) state.trendMode = state.prefs.trendMode + if (state.prefs.deltaBase) state.baselineMode = state.prefs.deltaBase + if (typeof state.prefs.durationCurve === 'boolean') state.durationCurve = state.prefs.durationCurve + if (state.prefs.fileSort) state.fileSort = state.prefs.fileSort + if (state.prefs.toolSort === 'name') state.browserSort = 'name' + else if (state.prefs.toolSort === 'count') state.browserSort = 'calls' + else if (state.prefs.toolSort === 'size') state.browserSort = 'size' + if (state.trendDna) state.trendMode = 'total' + applyHost() +} + +function viewKey(sessionId) { + return 'zcode-context-insight:view:' + sessionId +} + +function saveView() { + if (!state.snapshot?.session?.id) return + clearTimeout(state.saveTimer) + state.saveTimer = setTimeout(() => { + try { + localStorage.setItem( + viewKey(state.snapshot.session.id), + JSON.stringify({ + tab: state.tab, + step: state.step, + pinned: state.pinned, + granularity: state.granularity, + trendMode: state.trendMode, + baselineMode: state.baselineMode, + durationCurve: state.durationCurve, + adaptive: state.adaptive, + trendDna: state.trendDna, + browserMode: state.browserMode, + fileSort: state.fileSort, + insightsRange: state.insightsRange, + }), + ) + } catch {} + }, 250) +} + +function restoreView() { + if (!state.snapshot?.session?.id) return + let saved = null + try { + saved = JSON.parse(localStorage.getItem(viewKey(state.snapshot.session.id)) || 'null') + } catch {} + if (!saved || typeof saved !== 'object') { + if (['context', 'fleet', 'insights'].includes(state.prefs?.defaultView)) state.tab = state.prefs.defaultView + return + } + if (['context', 'fleet', 'insights'].includes(saved.tab)) state.tab = saved.tab + if (['step', 'turn'].includes(saved.granularity)) state.granularity = saved.granularity + if (['total', 'delta'].includes(saved.trendMode)) state.trendMode = saved.trendMode + if (['step', 'turn'].includes(saved.baselineMode)) state.baselineMode = saved.baselineMode + if (typeof saved.durationCurve === 'boolean') state.durationCurve = saved.durationCurve + if (typeof saved.adaptive === 'boolean') state.adaptive = saved.adaptive + if (typeof saved.trendDna === 'boolean') state.trendDna = saved.trendDna + if (state.trendDna) state.trendMode = 'total' + if (['categories', 'changes', 'dna'].includes(saved.browserMode)) state.browserMode = saved.browserMode + if (['7d', '30d', 'all'].includes(saved.insightsRange)) state.insightsRange = saved.insightsRange + if (saved.pinned === true && Number.isInteger(saved.step) && saved.step > 0 && saved.step <= (state.snapshot.stats.steps ?? 0)) { + state.step = saved.step + state.pinned = saved.step !== state.snapshot?.current?.step + } else { + state.pinned = false + state.step = state.snapshot?.current?.step ?? null + } +} + +async function refresh({ silent = false } = {}) { + if (!transport) return + try { + if (!silent) state.loading = true + const snapshot = await call('get_context_snapshot', { locale: hostLocale() }) + const previous = state.snapshot + state.snapshot = snapshot + if (!previous) { + applyPreferences(snapshot.preferences) + restoreView() + if (!state.step) state.step = snapshot.current?.step ?? null + if (state.tab === 'context') await loadStep(state.step, { force: true }) + if (state.trendDna) loadDnaSeries() + if (state.tab === 'fleet') await loadFleet() + if (state.tab === 'insights') await loadInsights() + } else { + const changed = JSON.stringify({ ...previous, generatedAt: 0 }) !== JSON.stringify({ ...snapshot, generatedAt: 0 }) + if (changed) { + const switched = previous.session?.id !== snapshot.session?.id + state.unchanged = 0 + state.stepCache.clear() + state.groupExtra.clear() + if (switched) { + state.history = [] + state.stepDetail = null + state.step = snapshot.current?.step ?? null + state.pinned = false + state.fleet = null + state.insights = null + state.detail = null + state.member = null + state.dnaData = null + state.dnaSeries = null + } + applyPreferences(snapshot.preferences) + if (!state.pinned || state.step == null) state.step = snapshot.current?.step ?? state.step + if (state.tab === 'context' && state.step) await loadStep(state.step) + if (state.trendDna) loadDnaSeries() + if (state.tab === 'fleet' && !state.fleet) await loadFleet() + if (state.tab === 'insights' && !state.insights) await loadInsights() + } else { + state.unchanged++ + } + } + state.loading = false + state.error = null + state.lastRefresh = Date.now() + if (!(state.settingsOpen || state.detail || state.member)) render() + schedulePoll() + } catch (error) { + state.loading = false + state.error = error instanceof UiError ? error : new UiError('read_failed', String(error?.message ?? error)) + render() + schedulePoll() + } +} + +function schedulePoll() { + clearTimeout(pollTimer) + const delay = document.hidden ? 10_000 : state.unchanged > 3 ? 6_000 : 3_000 + pollTimer = setTimeout(() => { + refresh({ silent: true }) + }, delay) +} + +async function loadStep(step, { force = false, baseline = state.baselineMode, search = '' } = {}) { + if (!step || !transport) return + const key = [step, baseline, search, state.browserSort].join('|') + if (!force && state.stepCache.has(key)) { + state.stepDetail = state.stepCache.get(key) + state.stepLoading = false + state.stepError = null + render() + return + } + const token = ++state.stepToken + state.stepLoading = true + state.stepError = null + render() + try { + const detail = await call('get_context_step', { + step, + baselineMode: baseline, + search, + sort: state.browserSort, + locale: hostLocale(), + }) + if (token !== state.stepToken) return + state.stepDetail = detail + state.stepCache.set(key, detail) + state.stepLoading = false + state.stepError = null + if (state.browserMode === 'dna' || state.trendDna) { + state.dnaData = null + render() + loadDna() + } else render() + } catch (error) { + if (token !== state.stepToken) return + state.stepLoading = false + state.stepError = error instanceof UiError ? error : new UiError('read_failed', String(error?.message ?? error)) + render() + } +} + +async function selectStep(step, { pin = true } = {}) { + if (!step) return + state.step = Number(step) + state.pinned = pin && state.step !== currentStep() + state.kindFilter = null + state.dnaData = null + saveView() + render() + await loadStep(state.step) + requestAnimationFrame(() => { + document.querySelector(`[data-step-bar="${state.step}"]`)?.scrollIntoView({ block: 'nearest', inline: 'center' }) + }) +} + +async function followLatest() { + state.pinned = false + state.step = currentStep() + state.kindFilter = null + saveView() + render() + await loadStep(state.step) +} + +async function loadEarlier() { + const list = requests() + const first = list[0]?.step + if (!first || first <= 1) return + try { + const data = await call('get_context_history', { + beforeStep: first, + limit: 200, + locale: hostLocale(), + }) + state.history = [...data.requests, ...state.history] + if (state.trendDna) loadDnaSeries() + render() + } catch (error) { + showToast(error?.message ?? state.t.error.generic) + } +} + +async function loadGroup(cat) { + const detail = state.stepDetail + if (!detail) return + const current = state.groupExtra.get(cat) ?? { items: [], nextOffset: 0, total: 0 } + try { + const page = await call('get_context_group', { + step: detail.step, + cat, + offset: current.nextOffset ?? 0, + limit: 50, + search: state.browserSearch, + sort: state.browserSort, + locale: hostLocale(), + }) + const existing = new Set(current.items.map((item) => item.key)) + state.groupExtra.set(cat, { + items: [...current.items, ...(page.items ?? []).filter((item) => !existing.has(item.key))], + nextOffset: page.nextOffset, + total: page.total, + }) + render() + } catch (error) { + showToast(error?.message ?? state.t.error.generic) + } +} + +async function loadDna({ append = false } = {}) { + const detail = state.stepDetail + if (!detail || state.dnaLoading) return + const token = ++state.dnaToken + state.dnaLoading = true + state.dnaData = append ? state.dnaData : null + render() + try { + const page = await call('get_context_dna', { + step: detail.step, + offset: append ? state.dnaData?.nextOffset ?? 0 : 0, + limit: 150, + locale: hostLocale(), + }) + if (token !== state.dnaToken) return + const existing = append ? state.dnaData?.items ?? [] : [] + const seen = new Set(existing.map((item) => item.key)) + state.dnaData = { + ...page, + items: [...existing, ...(page.items ?? []).filter((item) => !seen.has(item.key))], + } + state.dnaLoading = false + render() + } catch (error) { + if (token !== state.dnaToken) return + state.dnaLoading = false + showToast(error?.message ?? state.t.error.generic) + render() + } +} + +function setTrendDna() { + state.trendDna = !state.trendDna + if (state.trendDna) { + state.trendMode = 'total' + state.overview = false + state.browserMode = 'dna' + state.detailsView = 'browser' + state.dnaData = null + loadDna() + if (!state.dnaSeries) loadDnaSeries() + } + saveView() + render() +} + +function openDnaBrowser() { + state.browserMode = 'dna' + if (!state.dnaData) loadDna() + else render() + requestAnimationFrame(() => document.querySelector('.zc-card-browser')?.scrollIntoView({ behavior: 'smooth', block: 'start' })) +} + +async function loadDnaSeries() { + if (state.dnaSeriesLoading) return + const list = requests() + if (!list.length) return + const last = list[list.length - 1].step + const from = Math.max(list[0].step, last - 119) + state.dnaSeriesLoading = true + render() + try { + const data = await call('get_context_dna_series', { + fromStep: from, + toStep: last, + maxBands: 36, + locale: hostLocale(), + }) + state.dnaSeries = new Map((data.steps ?? []).map((entry) => [entry.step, entry.bands ?? []])) + state.dnaSeriesLoading = false + render() + } catch (error) { + state.dnaSeriesLoading = false + showToast(error?.message ?? state.t.error.generic) + render() + } +} + +function dnaGradient(bands) { + if (!Array.isArray(bands) || bands.length === 0) return null + const total = bands.reduce((sum, band) => sum + Math.max(0, band[1] || 0), 0) + if (total <= 0) return null + let acc = 0 + const stops = [] + for (const [catIndex, tokens] of bands) { + const value = Math.max(0, tokens || 0) + if (value <= 0) continue + const start = (acc / total) * 100 + acc += value + const end = (acc / total) * 100 + const color = CAT_COLOR[CATS[catIndex] ?? 'unknown'] + stops.push(`${color} ${start.toFixed(2)}% ${end.toFixed(2)}%`) + } + return stops.length ? `linear-gradient(to top, ${stops.join(', ')})` : null +} + +function setBrowserMode(mode) { + state.browserMode = mode + if (mode === 'dna' && !state.dnaData) loadDna() + else render() +} + +async function openElement(key, step = state.step) { + if (!key) return + const token = ++state.detailToken + state.detail = { kind: 'element', key, step, loading: true, data: null, format: 'readable', offset: 0, find: '' } + render() + try { + const data = await call('get_context_element', { + step, + key, + format: 'readable', + offset: 0, + limit: 12_000, + locale: hostLocale(), + }) + if (token !== state.detailToken) return + state.detail = { ...state.detail, loading: false, data } + render() + } catch (error) { + if (token !== state.detailToken) return + state.detail = { ...state.detail, loading: false, error: error?.message ?? state.t.error.detail } + render() + } +} + +async function loadMoreElement() { + const detail = state.detail + if (!detail?.data?.truncated) return + try { + const next = await call('get_context_element', { + step: detail.step, + key: detail.key, + format: detail.format, + offset: detail.data.nextOffset, + limit: 24_000, + locale: hostLocale(), + }) + state.detail = { + ...detail, + data: { + ...next, + content: (detail.data.content ?? '') + (next.content ?? ''), + }, + } + render() + } catch (error) { + showToast(error?.message ?? state.t.error.detail) + } +} + +async function loadMoreEvent() { + const detail = state.detail + if (!detail?.data?.nextOffset) return + try { + const next = await call('get_context_event', { + eventId: detail.event.id, + offset: detail.data.nextOffset, + limit: 20, + locale: hostLocale(), + }) + state.detail = { + ...detail, + data: { + ...next, + messages: [...(detail.data.messages ?? []), ...(next.messages ?? [])], + }, + } + render() + } catch (error) { + showToast(error?.message ?? state.t.error.event) + } +} + +async function switchElementFormat(format) { + const detail = state.detail + if (!detail?.key) return + try { + const data = await call('get_context_element', { + step: detail.step, + key: detail.key, + format, + offset: 0, + limit: 24_000, + locale: hostLocale(), + }) + state.detail = { ...detail, format, data } + render() + } catch (error) { + showToast(error?.message ?? state.t.error.detail) + } +} + +async function openEvent(event) { + if (!event) return + if (event.kind !== 'compaction') { + if (event.step) await selectStep(event.step, { pin: false }) + if (event.itemKey) await openElement(event.itemKey, event.step ?? state.step) + return + } + state.detail = { kind: 'event', event, loading: true, data: null } + render() + try { + const data = await call('get_context_event', { + eventId: event.id, + offset: 0, + limit: 12, + locale: hostLocale(), + }) + state.detail = { kind: 'event', event, loading: false, data } + render() + } catch (error) { + state.detail = { kind: 'event', event, loading: false, error: error?.message ?? state.t.error.event } + render() + } +} + +function closeDetail() { + state.detail = null + state.member = null + state.settingsOpen = false + render() +} + +async function loadFleet() { + if (state.fleetLoading) return + state.fleetLoading = true + state.fleetError = null + render() + try { + state.fleet = await call('get_context_fleet', { locale: hostLocale() }) + state.fleetLoading = false + render() + } catch (error) { + state.fleetLoading = false + state.fleetError = error?.message ?? state.t.error.generic + render() + } +} + +async function openMember(id) { + state.member = { id, loading: true, data: null } + state.memberLoading = true + render() + try { + const data = await call('get_context_fleet_member', { targetId: id, locale: hostLocale() }) + state.member = { id, loading: false, data } + state.memberLoading = false + render() + } catch (error) { + state.member = { id, loading: false, error: error?.message ?? state.t.error.generic } + state.memberLoading = false + render() + } +} + +async function loadInsights({ composition = false } = {}) { + if (state.insightsLoading) return + state.insightsLoading = true + state.insightsError = null + state.insightsCompositionLoading = composition + render() + try { + const data = await call('get_context_insights', { + range: state.insightsRange, + includeComposition: composition, + locale: hostLocale(), + }) + state.insights = data + state.insightsLoading = false + state.insightsCompositionLoading = false + render() + if (!composition && data.composition == null && !state.insightsCompositionLoading) { + state.insightsCompositionLoading = true + render() + call('get_context_insights', { range: state.insightsRange, includeComposition: true, locale: hostLocale() }) + .then((withComposition) => { + if (state.insights?.range === withComposition.range) { + state.insights = { ...state.insights, ...withComposition } + } + state.insightsCompositionLoading = false + render() + }) + .catch(() => { + state.insightsCompositionLoading = false + render() + }) + } + } catch (error) { + state.insightsLoading = false + state.insightsCompositionLoading = false + state.insightsError = error?.message ?? state.t.error.generic + render() + } +} + +async function setTab(tab) { + if (state.tab === tab) return + state.tab = tab + saveView() + render() + if (tab === 'fleet' && !state.fleet) await loadFleet() + if (tab === 'insights' && !state.insights) await loadInsights() +} + +function showToast(message) { + state.toast = { message, time: Date.now() } + render() + setTimeout(() => { + if (state.toast && Date.now() - state.toast.time >= 1800) { + state.toast = null + render() + } + }, 2000) +} + +async function copyText(text) { + try { + await navigator.clipboard.writeText(String(text ?? '')) + showToast(state.t('action.copied')) + } catch { + showToast(state.t('action.copied')) + } +} + +/* ------------------------------------------------------------------------------------------------ + * Render root + * ---------------------------------------------------------------------------------------------- */ + +function render() { + hideTrendTip() + const scrollTop = document.querySelector('.zc-main')?.scrollTop ?? 0 + const drawerScroll = document.querySelector('.zc-drawer-body')?.scrollTop ?? 0 + clearNode(root) + applyHost() + root.dataset.density = state.prefs?.compactCards ? 'compact' : 'comfortable' + if (state.loading && !state.snapshot) { + root.append(renderSkeleton()) + return + } + if (state.error && !state.snapshot) { + root.append(renderError(state.error)) + return + } + if (!state.snapshot) { + root.append(renderError(new UiError('offline', state.t('error.offline')))) + return + } + root.append(renderHeader()) + const main = h('main', { class: 'zc-main' }) + if (state.tab === 'context') main.append(renderContext()) + else if (state.tab === 'fleet') main.append(renderFleet()) + else main.append(renderInsights()) + root.append(main, renderFooter()) + if (state.toast) root.append(h('div', { class: 'zc-toast', role: 'status' }, state.toast.message)) + if (state.settingsOpen) root.append(renderSettings()) + else if (state.detail) root.append(renderDrawer()) + else if (state.member) root.append(renderMember()) + requestAnimationFrame(() => { + const next = document.querySelector('.zc-main') + if (next) next.scrollTop = scrollTop + const drawer = document.querySelector('.zc-drawer-body') + if (drawer && state.detail?.kind === 'element') drawer.scrollTop = drawerScroll + }) +} + +function renderSkeleton() { + return h( + 'div', + { class: 'zc-shell' }, + h('div', { class: 'zc-skel zc-skel-head' }), + h( + 'div', + { class: 'zc-skel-grid' }, + h('div', { class: 'zc-skel zc-skel-card' }), + h('div', { class: 'zc-skel zc-skel-card' }), + h('div', { class: 'zc-skel zc-skel-card' }), + ), + h('div', { class: 'zc-skel zc-skel-wide' }), + ) +} + +function renderError(error) { + const message = + error.code === 'binding_unavailable' + ? state.t('error.binding') + : error.code === 'database_missing' || error.code === 'database_unavailable' + ? state.t('error.database') + : error.code === 'read_timeout' + ? state.t('error.timeout') + : error.code === 'worker_unavailable' + ? state.t('error.worker') + : error.message || state.t('error.generic') + return h( + 'div', + { class: 'zc-error' }, + h('div', { class: 'zc-error-icon' }, icon('alert', 26)), + h('h2', null, state.t('error.title')), + h('p', null, message), + button(state.t('action.retry'), { onClick: () => refresh(), icon: 'refresh', class: 'zc-btn-primary' }), + ) +} + +function renderHeader() { + const snapshot = state.snapshot + const session = snapshot.session + const header = h('header', { class: 'zc-header' }) + header.append( + h( + 'div', + { class: 'zc-brand' }, + h('div', { class: 'zc-brand-mark' }, brandMark(24)), + h( + 'div', + { class: 'zc-brand-text' }, + h('div', { class: 'zc-title-row' }, h('span', { class: 'zc-title' }, state.t('app.title')), pill(state.t('app.readonly'), 'zc-pill-soft')), + h('div', { class: 'zc-session-title', title: session.title }, session.title || session.id), + h( + 'div', + { class: 'zc-session-meta' }, + session.model ? h('span', null, (session.provider ? session.provider + '/' : '') + session.model) : null, + session.contextWindow ? h('span', null, formatTokens(session.contextWindow) + ' window') : null, + h('span', null, relativeTime(session.updatedAt)), + ), + ), + h( + 'div', + { class: 'zc-actions' }, + iconButton('refresh', state.t('action.refresh'), () => refresh(), state.loading ? 'is-spinning' : ''), + iconButton('settings', state.t('action.settings'), () => { + state.settingsDraft = { ...state.prefs } + state.settingsOpen = true + render() + }), + iconButton('info', state.t('action.about'), () => { + state.detail = { kind: 'about' } + render() + }), + ), + ), + ) + const tabs = h('div', { class: 'zc-tabs', role: 'tablist' }) + for (const tab of ['context', 'fleet', 'insights']) { + tabs.append( + h( + 'button', + { + type: 'button', + role: 'tab', + 'aria-selected': state.tab === tab ? 'true' : 'false', + class: 'zc-tab' + (state.tab === tab ? ' is-active' : ''), + onclick: () => setTab(tab), + }, + state.t('tab.' + tab), + tab === 'fleet' && state.fleet ? h('span', { class: 'zc-tab-badge' }, state.fleet.nodes.length) : null, + tab === 'insights' && state.insights ? h('span', { class: 'zc-tab-badge' }, state.insights.kpi?.sessions ?? 0) : null, + ), + ) + } + header.append(tabs) + if (state.tab === 'context') header.append(renderStepBar()) + return header +} + +function renderStepBar() { + const total = state.snapshot.requestsTotal ?? state.snapshot.stats.steps ?? 0 + const selected = selectedStep() + const bar = h('div', { class: 'zc-stepbar' }) + const select = h('select', { + class: 'zc-select zc-step-select', + 'aria-label': state.t('steps.pick'), + onchange: (event) => selectStep(Number(event.target.value)), + }) + if ((state.snapshot.requestsFrom ?? 1) > 1) { + select.append(h('option', { value: '', disabled: true }, state.t('steps.unrecorded'))) + } + for (const request of requests()) { + select.append( + h( + 'option', + { value: request.step, selected: request.step === selected }, + '#' + request.step + ' · T' + request.turn + ' · ' + clockTime(request.time), + ), + ) + } + bar.append( + h( + 'div', + { class: 'zc-stepnav' }, + iconButton('left', state.t('steps.prev'), () => selectStep(Math.max(1, (selected ?? 1) - 1)), 'zc-step-prev'), + select, + iconButton('right', state.t('steps.next'), () => selectStep(Math.min(total, (selected ?? 1) + 1)), 'zc-step-next'), + ), + h( + 'div', + { class: 'zc-stepstatus' }, + state.pinned + ? h('span', { class: 'zc-pin is-pinned', title: state.t('steps.pinned', { step: selected }) }, icon('pin', 12), '#' + selected) + : h('span', { class: 'zc-pin', title: state.t('steps.following') }, h('span', { class: 'zc-live-dot' }), state.t('steps.live')), + state.pinned && selected != null && total > selected + ? button(state.t('steps.newer', { n: total - selected }), { + onClick: followLatest, + class: 'zc-btn-tiny zc-btn-accent', + icon: 'arrow', + }) + : null, + state.pinned ? button(state.t('steps.latest'), { onClick: followLatest, class: 'zc-btn-tiny', icon: 'arrow', title: state.t('steps.jumpLatest') }) : null, + ), + h( + 'div', + { class: 'zc-stepmeta' }, + h('span', null, state.t('steps.steps', { n: total })), + iconButton('copy', state.t('action.copy') + ' session id', () => copyText(state.snapshot.session.id), 'zc-iconbtn-soft'), + ), + ) + return bar +} + +function renderFooter() { + const coverage = state.snapshot.coverage + return h( + 'footer', + { class: 'zc-footer' }, + h('span', null, state.t('app.footer')), + h( + 'span', + { class: 'zc-footer-right' }, + coverage?.warnings?.length + ? h('button', { class: 'zc-linkbtn', type: 'button', onclick: () => openCoverage() }, state.t('coverage.details')) + : null, + h('span', null, state.t('app.version', { version: VERSION })), + ), + ) +} + +function openCoverage() { + state.detail = { kind: 'coverage' } + render() +} + +/* ------------------------------------------------------------------------------------------------ + * Context view + * ---------------------------------------------------------------------------------------------- */ + +function renderContext() { + const wrapper = h('div', { class: 'zc-context' }) + wrapper.append(renderStatsStrip()) + if (state.statsOpen) wrapper.append(renderStatsCard()) + wrapper.append(renderTokensCard(), renderTimingCard(), renderCurrentCard(), renderTrendCard()) + wrapper.append(renderDetailsTabs()) + if (state.detailsView === 'browser') wrapper.append(renderBrowserCard()) + else if (state.detailsView === 'events') wrapper.append(renderEventsCard()) + else if (state.detailsView === 'files') wrapper.append(renderFilesCard()) + return wrapper +} + +function renderStatsStrip() { + const stats = state.snapshot.stats + const family = stats.subagents ?? { count: 0 } + const item = (label, value) => h('span', { class: 'zc-summary-item' }, h('span', null, label), h('b', null, value)) + return h( + 'div', + { class: 'zc-summary-strip' }, + item(state.t('stats.turns'), formatCount(stats.turns)), + item(state.t('stats.steps'), formatCount(stats.steps)), + item(state.t('stats.toolCalls'), formatCount(stats.toolCalls)), + item(state.t('stats.family'), formatCount(family.count ?? 0)), + item(state.t('stats.cacheHit'), pct(stats.cacheHitRate)), + item(state.t('stats.cost'), costText(stats.cost)), + h('button', { + type: 'button', + class: 'zc-summary-toggle' + (state.statsOpen ? ' is-active' : ''), + onclick: () => { state.statsOpen = !state.statsOpen; render() }, + 'aria-expanded': state.statsOpen ? 'true' : 'false', + }, state.t('stats.details'), icon(state.statsOpen ? 'down' : 'right', 12)), + ) +} + +function renderDetailsTabs() { + const detail = state.stepDetail + const itemCount = (detail?.groups ?? []).reduce((sum, group) => sum + (group.count ?? 0), 0) + const eventCount = state.snapshot.eventsTotal ?? state.snapshot.events?.length ?? 0 + const fileCount = state.snapshot.files?.entries?.length ?? 0 + const tab = (key, label, count) => h('button', { + type: 'button', + class: 'zc-detail-tab' + (state.detailsView === key ? ' is-active' : ''), + onclick: () => { state.detailsView = state.detailsView === key ? null : key; render() }, + 'aria-pressed': state.detailsView === key ? 'true' : 'false', + }, label, h('b', null, formatCount(count))) + return h('div', { class: 'zc-detail-tabs' }, + tab('browser', state.t('browser.title'), itemCount), + tab('events', state.t('events.title'), eventCount), + tab('files', state.t('files.title'), fileCount), + ) +} + +function card(title, { subtitle = null, right = null, className = '', body = null } = {}) { + return h( + 'section', + { class: 'zc-card ' + className }, + h( + 'div', + { class: 'zc-card-head' }, + h('div', { class: 'zc-card-titlewrap' }, h('h2', { class: 'zc-card-title' }, title), subtitle ? h('div', { class: 'zc-card-sub' }, subtitle) : null), + right ? h('div', { class: 'zc-card-right' }, right) : null, + ), + body, + ) +} + +function metric(label, value, { hint = null, onClick = null, className = '' } = {}) { + const node = h( + 'button', + { + type: 'button', + class: 'zc-metric ' + className + (onClick ? ' is-clickable' : ''), + title: hint ?? undefined, + onclick: onClick ?? undefined, + disabled: !onClick, + }, + h('span', { class: 'zc-metric-value' }, value), + h('span', { class: 'zc-metric-label' }, label), + ) + return node +} + +function renderStatsCard() { + const stats = state.snapshot.stats + const counts = stats.eventCounts ?? eventCounts() + const family = stats.subagents ?? { count: 0, usage: null } + const tools = stats.toolTally ?? [] + const files = stats.files ?? { read: { files: 0 }, write: { files: 0 }, search: { files: 0 }, image: { files: 0 } } + const jumpTo = (target) => { + if (target === 'inputs') { + state.browserMode = 'categories' + state.kindFilter = null + state.expandedCats.add('user') + openElement(detailFirstKey('user'), state.step) + } else if (target === 'files-read' || target === 'files-write' || target === 'files-search' || target === 'files-images') { + state.fileKinds = new Set([target.split('-')[1] === 'written' ? 'write' : target.split('-')[1] === 'images' ? 'image' : target.split('-')[1]]) + state.filesAll = true + render() + document.querySelector('[data-card="files"]')?.scrollIntoView({ behavior: 'smooth', block: 'start' }) + } else if (target === 'fleet') { + setTab('fleet') + } + } + const flow = h('div', { class: 'zc-flow' }) + const node = (key, label, value, onClick, className = '') => + h( + 'button', + { + type: 'button', + class: 'zc-flow-node ' + className, + onclick: onClick ?? undefined, + title: onClick ? state.t('stats.jump') + ' ' + label : undefined, + disabled: !onClick, + }, + h('span', { class: 'zc-flow-label' }, label), + h('span', { class: 'zc-flow-value' }, value), + ) + flow.append( + node('inputs', state.t('stats.inputs'), formatCount(stats.humanInputs), () => jumpTo('inputs'), 'tone-user'), + node('events', state.t('stats.events'), formatCount((counts.inject ?? 0) + (counts.compaction ?? 0)), null, 'tone-inject'), + node('session', state.t('stats.billed'), formatTokens(stats.billedTokens), () => setTab('insights'), 'tone-session is-center'), + node('tools', state.t('stats.tools'), formatCount(stats.toolCalls), null, 'tone-tool'), + node('cost', state.t('stats.cost'), costText(stats.cost), null, 'tone-cost'), + ) + const toolPills = h('div', { class: 'zc-pills-row' }) + for (const [name, count] of tools.slice(0, 5)) { + toolPills.append(h('span', { class: 'zc-mini-pill', title: name }, name, h('b', null, formatCount(count)))) + } + if (tools.length > 5) toolPills.append(h('span', { class: 'zc-mini-pill zc-mini-pill-more' }, state.t('stats.moreTools', { n: tools.length - 5 }))) + const filePills = h('div', { class: 'zc-pills-row' }) + const fileSpec = [ + ['read', state.t('stats.read'), files.read?.files ?? 0, 'files-read'], + ['write', state.t('stats.written'), files.write?.files ?? 0, 'files-write'], + ['search', state.t('stats.searched'), files.search?.files ?? 0, 'files-search'], + ['image', state.t('stats.imagesShort'), files.image?.files ?? 0, 'files-images'], + ] + for (const [kind, label, count, target] of fileSpec) { + filePills.append( + h( + 'button', + { + type: 'button', + class: 'zc-mini-pill is-clickable', + title: state.t('stats.filesTip'), + onclick: () => jumpTo(target), + }, + label, + h('b', null, formatCount(count)), + ), + ) + } + const familyNode = h( + 'button', + { + type: 'button', + class: 'zc-family-cell', + title: state.t('stats.familyTip'), + onclick: () => jumpTo('fleet'), + }, + h('span', { class: 'zc-family-icon' }, icon('branch', 15)), + h( + 'span', + { class: 'zc-family-text' }, + h('b', null, state.t('stats.familyValue', { n: family.count ?? 0, tokens: formatTokens(family.usage?.billed ?? 0) })), + h('small', null, family.count ? costText(family.usage?.cost) : state.t('stats.familyTip')), + ), + ) + const body = h( + 'div', + { class: 'zc-stats-body' }, + flow, + h('div', { class: 'zc-stats-lower' }, toolPills, filePills), + familyNode, + h( + 'div', + { class: 'zc-stats-foot' }, + h('span', null, state.t('stats.cacheHit') + ' ' + pct(stats.cacheHitRate)), + h('span', null, state.t('stats.answers') + ' ' + formatCount(stats.answers)), + h('span', null, state.t('stats.images') + ' ' + formatCount(stats.images)), + h('span', null, state.t('stats.skills') + ' ' + formatCount(stats.skills)), + stats.unpricedCalls ? h('span', { class: 'zc-muted' }, state.t('stats.unpriced', { n: stats.unpricedCalls })) : null, + ), + ) + return card(state.t('stats.title'), { className: 'zc-card-stats', body }) +} + +function detailFirstKey(cat) { + const group = state.stepDetail?.groups?.find((candidate) => candidate.cat === cat) + return group?.items?.[0]?.key ?? null +} + +function renderTokensCard() { + const current = state.snapshot.current + const stats = state.snapshot.stats + const parts = [ + ...CATS.filter((cat) => (current?.parts?.[cat] ?? 0) > 0).map((cat) => ({ + key: cat, + label: catLabel(cat), + value: current.parts[cat], + color: CAT_COLOR[cat], + })), + ...(current?.output ? [{ key: 'output', label: state.t('tokens.output'), value: current.output, color: CAT_COLOR.output }] : []), + ] + const total = parts.reduce((sum, part) => sum + part.value, 0) + const body = h('div', { class: 'zc-donut-body' }) + if (parts.length === 0) { + body.append(h('div', { class: 'zc-empty' }, state.t('tokens.empty'))) + } else { + body.append( + h( + 'div', + { class: 'zc-donut-row' }, + renderDonut(parts, { + size: 104, + centerTop: formatTokens(total), + centerSub: state.t('tokens.total'), + }), + renderSliceList(parts, total), + ), + ) + } + return card(state.t('tokens.title'), { + className: 'zc-card-donut', + right: stats.cacheHitRate != null ? pill(state.t('stats.cacheHit') + ' ' + pct(stats.cacheHitRate), 'zc-pill-accent', state.t('tokens.cacheTip')) : null, + body, + }) +} + +function renderTimingCard() { + const timing = state.snapshot.timing + if (!timing || (!timing.wallMs && !timing.calls)) { + return card(state.t('timing.title'), { className: 'zc-card-donut', body: h('div', { class: 'zc-empty' }, state.t('timing.empty')) }) + } + const wall = timing.wallMs || timing.modelMs + timing.toolsMs + timing.otherMs || 0 + const slice = (key, label, value, color) => ({ key, label, value, color }) + const parts = [ + slice('ttft', state.t('timing.ttft'), timing.ttftMs, TIMING_COLOR.ttft), + slice('gen', state.t('timing.gen'), timing.genMs, TIMING_COLOR.gen), + slice('tools', state.t('timing.tools'), timing.toolsMs, TIMING_COLOR.tools), + slice('other', state.t('timing.other'), timing.otherMs, TIMING_COLOR.other), + ].filter((part) => part.value > 0) + const tps = timing.speedMs > 0 ? timing.speedTokens / (timing.speedMs / 1000) : null + const body = h( + 'div', + { class: 'zc-timing-body' }, + h( + 'div', + { class: 'zc-donut-row' }, + renderDonut(parts, { size: 104, centerTop: formatDuration(wall), centerSub: state.t('timing.total') }), + renderSliceList(parts, wall, { ttft: timing.calls, tools: timing.toolCalls }), + ), + renderTimingStrip(timing.spans ?? []), + ) + return card(state.t('timing.title'), { + className: 'zc-card-donut', + right: tps != null ? pill(state.t('timing.tps', { n: Math.round(tps) }), 'zc-pill-soft') : null, + body, + }) +} + +function renderSliceList(parts, total, counts = {}) { + const list = h('div', { class: 'zc-slices' }) + for (const part of parts) { + const count = counts[part.key] + list.append( + h( + 'div', + { class: 'zc-slice', dataset: { cat: part.key } }, + h('i', { class: 'zc-dot', style: { background: part.color } }), + h('span', { class: 'zc-slice-label' }, part.label), + h('span', { class: 'zc-slice-value' }, (part.key === 'output' ? '' : '≈') + formatTokens(part.value)), + h('span', { class: 'zc-slice-share' }, formatShare(part.value, total) + '%'), + count != null ? h('span', { class: 'zc-slice-count' }, formatCount(count)) : null, + ), + ) + } + return list +} + +function renderCurrentCard() { + const current = state.snapshot.current + if (!current) return card(state.t('current.title'), { body: h('div', { class: 'zc-empty' }, state.t('steps.empty')) }) + const parts = CATS.filter((cat) => (current.parts?.[cat] ?? 0) > 0).map((cat) => ({ + key: cat, + label: catLabel(cat), + value: current.parts[cat], + color: CAT_COLOR[cat], + })) + const window = current.window || 0 + const total = current.prompt || parts.reduce((sum, part) => sum + part.value, 0) + const max = window || total || 1 + const reserve = current.reserve ?? 0 + const body = h( + 'div', + { class: 'zc-current' }, + h( + 'div', + { class: 'zc-current-head' }, + h( + 'div', + { class: 'zc-current-num' }, + h('b', null, formatTokens(total)), + h('span', null, window ? ' / ' + formatTokens(window) + ' tokens' : ' ' + state.t('current.estimate')), + current.pct != null ? h('em', null, pct(current.pct) + ' ' + state.t('current.used')) : h('em', { class: 'zc-muted' }, state.t('current.windowUnknown')), + ), + h('div', { class: 'zc-current-meta' }, current.model ?? '', current.headerEstimated ? h('span', { class: 'zc-warn-dot', title: state.t('current.headerEstimated') }) : null), + ), + renderStackedBar(parts, { max, reserve, height: 18 }), + h( + 'div', + { class: 'zc-legend' }, + parts.map((part) => + h( + 'span', + { class: 'zc-legend-item', dataset: { cat: part.key } }, + h('i', { style: { background: part.color } }), + h('span', null, part.label), + h('b', null, formatTokens(part.value)), + h('em', null, formatShare(part.value, total) + '%'), + ), + ), + ), + reserve > 0 || window + ? h( + 'div', + { class: 'zc-current-foot' }, + reserve > 0 ? h('span', null, state.t('current.reserve') + ' ' + formatTokens(reserve)) : null, + window ? h('span', null, state.t('current.headroom') + ' ' + formatTokens(Math.max(0, window - total - reserve))) : null, + current.lastUser ? h('span', { class: 'zc-lastuser', title: current.lastUser }, state.t('current.lastUser') + ' · ' + current.lastUser) : null, + ) + : null, + ) + return card(state.t('current.title'), { + className: 'zc-card-current', + subtitle: current.step ? state.t('current.subtitle', { step: current.step, turn: current.turn }) : null, + body, + }) +} + +function renderStackedBar(parts, { max = 0, reserve = 0, height = 16, mode = 'total' } = {}) { + const bar = h('div', { class: 'zc-stacked', style: { height: height + 'px' } }) + if (mode === 'total') { + const scale = max > 0 ? 100 / max : 0 + for (const part of parts) { + if (!(part.value > 0)) continue + bar.append( + h('span', { + class: 'zc-stacked-seg', + dataset: { cat: part.key }, + style: { width: Math.max(0.15, part.value * scale) + '%', background: part.color }, + title: part.label + ' · ' + formatTokens(part.value), + }), + ) + } + if (reserve > 0 && max > 0) { + bar.append( + h('span', { + class: 'zc-stacked-reserve', + style: { width: Math.min(100, (reserve / max) * 100) + '%' }, + title: state.t('current.reserve') + ' · ' + formatTokens(reserve), + }), + ) + } + } + return bar +} + +function renderDonut(parts, { size = 104, centerTop = '', centerSub = '' } = {}) { + const total = parts.reduce((sum, part) => sum + Math.max(0, part.value), 0) + const radius = size / 2 - 8 + const circumference = 2 * Math.PI * radius + const svg = sv('svg', { width: size, height: size, viewBox: `0 0 ${size} ${size}`, class: 'zc-donut', role: 'img' }) + svg.append(sv('circle', { cx: size / 2, cy: size / 2, r: radius, fill: 'none', stroke: 'var(--track)', 'stroke-width': 11 })) + let offset = 0 + for (const part of parts) { + const share = total > 0 ? Math.max(0, part.value) / total : 0 + if (share <= 0) continue + const dash = share * circumference + svg.append( + sv('circle', { + cx: size / 2, + cy: size / 2, + r: radius, + fill: 'none', + stroke: part.color, + 'stroke-width': 11, + 'stroke-dasharray': `${Math.max(0, dash - 1.5)} ${circumference - Math.max(0, dash - 1.5)}`, + 'stroke-dashoffset': -offset * circumference, + transform: `rotate(-90 ${size / 2} ${size / 2})`, + 'stroke-linecap': 'butt', + dataset: { cat: part.key }, + }), + ) + offset += share + } + const wrap = h( + 'div', + { class: 'zc-donut-wrap', style: { width: size + 'px', height: size + 'px' } }, + svg, + h('div', { class: 'zc-donut-center' }, h('b', null, centerTop), h('span', null, centerSub)), + ) + return wrap +} + +function renderTimingStrip(spans) { + if (!Array.isArray(spans) || spans.length === 0) return null + const width = 100 + const strip = h('div', { class: 'zc-strip', title: state.t('timing.stripTip') }) + const sorted = [...spans].sort((a, b) => a.start - b.start) + const start = sorted[0]?.start ?? 0 + const end = Math.max(...sorted.map((span) => span.end)) || start + 1 + const total = Math.max(1, end - start) + let cursor = start + for (const span of sorted.slice(0, 260)) { + if (span.start > cursor) { + strip.append(h('span', { class: 'zc-strip-gap', style: { width: ((span.start - cursor) / total) * width + '%' } })) + } + const widthPct = Math.max(0.08, ((span.end - span.start) / total) * width) + strip.append( + h('span', { + class: 'zc-strip-seg', + dataset: { cat: span.kind }, + style: { width: widthPct + '%', background: TIMING_COLOR[span.kind] ?? TIMING_COLOR.other }, + title: span.kind + ' · ' + formatDuration(span.end - span.start), + }), + ) + cursor = Math.max(cursor, span.end) + } + return strip +} + +/* ------------------------------------------------------------------------------------------------ + * Trend + * ---------------------------------------------------------------------------------------------- */ + +function trendEntries() { + const list = requests() + if (state.granularity === 'step') { + return list.map((request) => ({ ...request, label: 'S' + request.step, count: 1, firstStep: request.step })) + } + const byTurn = new Map() + for (const request of list) { + const current = byTurn.get(request.turn) + if (!current) byTurn.set(request.turn, { ...request, label: 'T' + request.turn, count: 1, firstStep: request.step, durationMs: request.durationMs, ttftMs: request.ttftMs, toolCalls: request.toolCalls }) + else { + current.count++ + current.durationMs += request.durationMs ?? 0 + current.ttftMs += request.ttftMs ?? 0 + current.toolCalls += request.toolCalls ?? 0 + current.output = request.output + current.prompt = request.prompt + current.parts = request.parts + current.cacheRead = request.cacheRead + current.cacheWrite = request.cacheWrite + current.time = request.time + current.step = request.step + current.header = request.header + current.total = request.total + } + } + return [...byTurn.values()] +} + +function diffParts(parts, previous) { + const out = {} + for (const cat of CATS) out[cat] = (parts?.[cat] ?? 0) - (previous?.parts?.[cat] ?? 0) + return out +} + +function eventsFor(entry) { + const events = state.snapshot?.events ?? [] + if (state.granularity === 'step') return events.filter((event) => event.step === entry.step && ['compaction', 'model', 'rewind'].includes(event.kind)) + return events.filter((event) => event.turn === entry.turn && ['compaction', 'model', 'rewind'].includes(event.kind)) +} + +function renderTrendCard() { + const entries = trendEntries() + const controls = h('div', { class: 'zc-trend-controls' }) + const seg = (value, label, current, onClick) => + h('button', { + type: 'button', + class: 'zc-segbtn' + (current === value ? ' is-active' : ''), + onclick: onClick, + 'aria-pressed': current === value ? 'true' : 'false', + }, label) + controls.append( + h('div', { class: 'zc-segmented' }, + seg('step', state.t('trend.steps'), state.granularity, () => { state.granularity = 'step'; saveView(); render() }), + seg('turn', state.t('trend.turns'), state.granularity, () => { state.granularity = 'turn'; saveView(); render() }), + ), + h('div', { class: 'zc-segmented' }, + seg('total', state.t('trend.total'), state.trendMode, () => { state.trendMode = 'total'; saveView(); render() }), + seg('delta', state.t('trend.delta'), state.trendMode, () => { state.trendMode = 'delta'; state.trendDna = false; saveView(); render() }), + ), + h('div', { class: 'zc-toggles' }, + h('button', { type: 'button', class: 'zc-toggle' + (state.overview ? ' is-active' : ''), title: state.t('trend.overviewTip'), onclick: () => { state.overview = !state.overview; if (state.overview) state.trendDna = false; render() } }, state.t('trend.overview')), + h('button', { type: 'button', class: 'zc-toggle' + (state.trendDna ? ' is-active' : ''), title: state.t('trend.dnaTip'), onclick: setTrendDna }, state.t('trend.dna')), + h('button', { type: 'button', class: 'zc-toggle' + (state.adaptive ? ' is-active' : ''), title: state.t('trend.adaptiveTip'), onclick: () => { state.adaptive = !state.adaptive; render() } }, state.t('trend.adaptive')), + h('button', { type: 'button', class: 'zc-toggle' + (state.durationCurve ? ' is-active' : ''), title: state.t('trend.durationTip'), onclick: () => { state.durationCurve = !state.durationCurve; saveView(); render() } }, state.t('trend.duration')), + ), + ) + const body = h('div', { class: 'zc-trend-body' }) + if (entries.length === 0) { + body.append(h('div', { class: 'zc-empty' }, state.t('trend.empty'))) + } else if (state.overview) { + body.append(renderTrendOverview(entries)) + } else { + body.append(renderTrendBars(entries)) + } + const brief = renderBrief() + if (brief) body.append(brief) + const earlier = (state.snapshot.requestsFrom ?? 1) > 1 + return card(state.t('trend.title'), { + className: 'zc-card-trend', + right: earlier ? button(state.t('action.loadEarlier'), { onClick: loadEarlier, class: 'zc-btn-tiny', icon: 'left' }) : null, + body: h('div', null, controls, body), + }) +} + +function renderTrendBars(entries) { + const wrap = h('div', { class: 'zc-trend-wrap' }) + const chart = h('div', { class: 'zc-trend-chart' }) + const scroll = h('div', { class: 'zc-trend-scroll', title: state.t('trend.scrollTip') }) + const inner = h('div', { class: 'zc-trend-inner' }) + const maxBase = state.adaptive + ? Math.max(1, ...entries.map((entry) => (state.trendMode === 'delta' ? 0 : entry.prompt))) + : state.snapshot.current?.window || Math.max(1, ...entries.map((entry) => entry.prompt)) + let maxDelta = 1 + if (state.trendMode === 'delta') { + for (const [index, entry] of entries.entries()) { + const delta = diffParts(entry.parts, entries[index - 1]?.parts) + maxDelta = Math.max(maxDelta, ...Object.values(delta).map((value) => Math.abs(value))) + } + } + const max = state.trendMode === 'delta' ? maxDelta : maxBase + const bars = h('div', { class: 'zc-bars', style: { width: Math.max(entries.length * 18, 320) + 'px' } }) + const markers = h('div', { class: 'zc-markers', style: { width: Math.max(entries.length * 18, 320) + 'px' } }) + const turnMap = new Map() + for (const [index, entry] of entries.entries()) { + const previous = entries[index - 1] + const selected = entry.step === state.step || (entry.firstStep <= state.step && entry.step >= state.step) + const bar = h('div', { + class: 'zc-bar' + (selected ? ' is-selected' : ''), + dataset: { stepBar: entry.step, step: state.granularity === 'turn' ? entry.firstStep : entry.step }, + role: 'button', + tabindex: 0, + 'aria-label': '#' + entry.step + ' ' + formatTokens(entry.prompt) + ' prompt tokens', + onclick: () => selectStep(state.granularity === 'turn' ? entry.step : entry.step, { pin: true }), + onkeydown: (event) => { + if (event.key === 'Enter' || event.key === ' ') { + event.preventDefault() + selectStep(entry.step, { pin: true }) + } + }, + onmouseenter: (event) => showTrendTip(event, entry, previous), + onmousemove: (event) => moveTrendTip(event), + onmouseleave: hideTrendTip, + }) + if (state.trendMode === 'total') { + const bands = state.trendDna ? state.dnaSeries?.get(entry.step) : null + const gradient = dnaGradient(bands) + if (gradient) { + bar.append(h('div', { + class: 'zc-bar-stack zc-bar-dna', + style: { height: Math.min(100, ((entry.prompt || 0) / max) * 100) + '%', background: gradient }, + title: state.t('trend.dnaTip'), + })) + } else { + const stack = h('div', { class: 'zc-bar-stack' }) + for (const cat of CATS) { + const value = entry.parts?.[cat] ?? 0 + if (value <= 0) continue + stack.append(h('span', { + class: 'zc-bar-seg', + dataset: { cat }, + style: { height: (value / max) * 100 + '%', background: CAT_COLOR[cat] }, + })) + } + bar.append(stack) + } + } else { + const delta = previous ? diffParts(entry.parts, previous.parts) : {} + const up = h('div', { class: 'zc-bar-up' }) + const down = h('div', { class: 'zc-bar-down' }) + for (const cat of CATS) { + const value = delta[cat] ?? 0 + if (value === 0) continue + const target = value > 0 ? up : down + target.append(h('span', { + class: 'zc-bar-seg', + dataset: { cat }, + style: { height: (Math.abs(value) / max) * 50 + '%', background: CAT_COLOR[cat] }, + })) + } + bar.append(h('div', { class: 'zc-bar-delta' }, up, h('span', { class: 'zc-zero' }), down)) + } + bars.append(bar) + const turnKey = entry.turn + if (!turnMap.has(turnKey)) turnMap.set(turnKey, { start: index, count: 0, turn: turnKey }) + turnMap.get(turnKey).count++ + const events = eventsFor(entry) + if (events.length) { + const marker = h('div', { class: 'zc-marker', style: { left: index * 18 + 9 + 'px' } }) + for (const event of events.slice(0, 3)) { + marker.append(h('span', { class: 'zc-marker-dot', dataset: { kind: event.kind }, title: state.t('trend.' + event.kind) }, event.kind === 'compaction' ? '✂' : event.kind === 'model' ? '⇄' : '↶')) + } + markers.append(marker) + } + } + const axis = h('div', { class: 'zc-axis' }, ...[1, 0.75, 0.5, 0.25, 0].map((fraction) => h('span', null, formatTokens(max * fraction)))) + const turnBand = h('div', { class: 'zc-turnband', style: { width: Math.max(entries.length * 18, 320) + 'px' } }) + for (const [turn, info] of turnMap) { + turnBand.append(h('span', { class: 'zc-turnlabel', style: { left: info.start * 18 + 'px', width: info.count * 18 + 'px' } }, 'T' + turn)) + } + const duration = state.durationCurve ? renderDurationCurve(entries) : null + chart.append(markers, h('div', { class: 'zc-bars-row' }, axis, bars), duration ? duration : null) + inner.append(chart, turnBand) + scroll.append(inner) + wrap.append(scroll) + return wrap +} + +function renderDurationCurve(entries) { + const maxDuration = Math.max(1, ...entries.map((entry) => entry.durationMs ?? 0)) + const width = Math.max(entries.length * 18, 320) + const height = 30 + const points = entries.map((entry, index) => { + const x = index * 18 + 9 + const y = height - ((entry.durationMs ?? 0) / maxDuration) * (height - 4) + return x + ',' + y.toFixed(1) + }) + return sv( + 'svg', + { class: 'zc-duration', width, height, viewBox: `0 0 ${width} ${height}`, 'aria-hidden': 'true' }, + sv('polyline', { points: points.join(' '), fill: 'none', stroke: 'var(--timing-text)', 'stroke-width': 1.5, 'stroke-linejoin': 'round' }), + ) +} + +function renderTrendOverview(entries) { + const n = entries.length + if (n === 0) return h('div', { class: 'zc-empty' }, state.t('trend.empty')) + const delta = state.trendMode === 'delta' + const deltas = entries.map((entry, index) => { + const previous = entries[index - 1] + const out = {} + for (const cat of CATS) out[cat] = previous ? (entry.parts?.[cat] ?? 0) - (previous.parts?.[cat] ?? 0) : 0 + return out + }) + let maxUp = 0 + let maxDown = 0 + let maxTotal = 1 + for (const [index, entry] of entries.entries()) { + maxTotal = Math.max(maxTotal, entry.prompt || 0) + const values = delta ? deltas[index] : entry.parts + let up = 0 + let down = 0 + for (const cat of CATS) { + const value = values?.[cat] ?? 0 + if (value > 0) up += value + else down -= value + } + maxUp = Math.max(maxUp, up) + maxDown = Math.max(maxDown, down) + } + const width = 1000 + const height = 112 + const span = delta ? Math.max(1, maxUp + maxDown) : maxTotal + const zeroY = delta ? (maxUp / span) * height : height + const scale = delta ? height / span : height / Math.max(1, maxTotal) + const xAt = (index) => (n > 1 ? (index / (n - 1)) * width : width / 2) + const yAt = (value, direction = 1) => Math.round((zeroY - direction * value * scale) * 100) / 100 + const svg = sv('svg', { + class: 'zc-overview-svg', + viewBox: `0 0 ${width} ${height}`, + preserveAspectRatio: 'none', + role: 'img', + 'aria-label': state.t('trend.overviewTip'), + }) + svg.append(sv('rect', { x: 0, y: 0, width, height, fill: 'var(--track)', rx: 3 })) + if (delta) { + const upCum = new Array(n).fill(0) + const downCum = new Array(n).fill(0) + for (const cat of CATS) { + const upPrev = upCum.slice() + const downPrev = downCum.slice() + for (let i = 0; i < n; i++) { + const value = deltas[i][cat] ?? 0 + if (value > 0) upCum[i] += value + else downCum[i] += -value + } + const polygon = (upper, lower) => { + const points = [] + for (let i = 0; i < n; i++) points.push(`${xAt(i)},${yAt(upper[i], 1)}`) + for (let i = n - 1; i >= 0; i--) points.push(`${xAt(i)},${yAt(lower[i], 1)}`) + return points.join(' ') + } + if (upCum.some((value, i) => value !== upPrev[i])) svg.append(sv('polygon', { points: polygon(upCum, upPrev), fill: CAT_COLOR[cat] })) + if (downCum.some((value, i) => value !== downPrev[i])) svg.append(sv('polygon', { points: polygon(downCum, downPrev), fill: CAT_COLOR[cat], opacity: 0.72 })) + } + svg.append(sv('line', { x1: 0, y1: zeroY, x2: width, y2: zeroY, stroke: 'var(--border-strong)', 'stroke-dasharray': '3 3', 'stroke-width': 1 })) + } else { + const cum = new Array(n).fill(0) + for (const cat of CATS) { + const prev = cum.slice() + for (let i = 0; i < n; i++) cum[i] += entries[i].parts?.[cat] ?? 0 + const points = [] + for (let i = 0; i < n; i++) points.push(`${xAt(i)},${yAt(cum[i])}`) + for (let i = n - 1; i >= 0; i--) points.push(`${xAt(i)},${yAt(prev[i])}`) + svg.append(sv('polygon', { points: points.join(' '), fill: CAT_COLOR[cat] })) + } + } + if (state.durationCurve) { + const maxDuration = Math.max(1, ...entries.map((entry) => entry.durationMs ?? 0)) + const points = entries.map((entry, index) => `${xAt(index)},${Math.round(height - 5 - ((entry.durationMs ?? 0) / maxDuration) * (height - 16))}`).join(' ') + if (points) svg.append(sv('polyline', { points, fill: 'none', stroke: 'var(--overview-duration)', 'stroke-width': 1.6, 'stroke-linejoin': 'round', opacity: 0.95 })) + } + const selectedIndex = entries.findIndex((entry) => entry.step === state.step || (entry.firstStep != null && entry.firstStep <= state.step && entry.step >= state.step)) + if (selectedIndex >= 0) { + svg.append(sv('line', { x1: xAt(selectedIndex), y1: 0, x2: xAt(selectedIndex), y2: height, stroke: 'var(--accent)', 'stroke-width': 1, 'stroke-dasharray': '2 2' })) + } + svg.append(sv('rect', { x: 0, y: 0, width, height, fill: 'transparent', style: 'cursor:crosshair' })) + const axisValues = delta + ? [maxUp, maxUp * 0.75, maxUp * 0.5, maxUp * 0.25, 0] + : [maxTotal, maxTotal * 0.75, maxTotal * 0.5, maxTotal * 0.25, 0] + const axis = h('div', { class: 'zc-overview-axis' }, axisValues.map((value) => h('span', null, (delta && value > 0 ? '+' : '') + formatTokens(value)))) + const turnBand = h('div', { class: 'zc-overview-turnband' }) + let lastTurn = null + for (const [index, entry] of entries.entries()) { + if (entry.turn === lastTurn) continue + lastTurn = entry.turn + const count = entries.filter((candidate) => candidate.turn === entry.turn).length + turnBand.append(h('span', { style: { left: (index / Math.max(1, n)) * 100 + '%', width: (count / Math.max(1, n)) * 100 + '%' } }, 'T' + entry.turn)) + } + const wrap = h('div', { class: 'zc-overview' }, + h('div', { class: 'zc-overview-main' }, axis, svg), + turnBand, + h('div', { class: 'zc-overview-note' }, state.t('trend.overviewTip')), + ) + const pick = (event) => { + const rect = svg.getBoundingClientRect() + if (rect.width <= 0) return 0 + return Math.max(0, Math.min(n - 1, Math.round(((event.clientX - rect.left) / rect.width) * (n - 1)))) + } + svg.addEventListener('mousemove', (event) => { + const index = pick(event) + const entry = entries[index] + showTrendTip(event, entry, entries[index - 1]) + }) + svg.addEventListener('mouseleave', hideTrendTip) + svg.addEventListener('click', (event) => { + const entry = entries[pick(event)] + if (entry) selectStep(entry.step, { pin: true }) + }) + return wrap +} + +function renderTrendDna() { + const detail = state.stepDetail + const items = state.dnaData?.items ?? detail?.dna ?? [] + const wrap = h('div', { class: 'zc-trend-dna' }) + wrap.append( + h('div', { class: 'zc-trend-dna-head' }, + h('b', null, state.t('trend.dna')), + h('span', null, 'request #' + (detail?.step ?? state.step ?? '—')), + state.dnaLoading ? h('span', { class: 'zc-muted' }, state.t('app.tagline')) : null, + button(state.t('action.open'), { onClick: openDnaBrowser, class: 'zc-btn-tiny', icon: 'arrow' }), + ), + ) + if (!items.length) { + wrap.append(h('div', { class: 'zc-note' }, state.dnaLoading ? state.t('app.tagline') : state.t('browser.empty'))) + return wrap + } + const total = Math.max(1, items.reduce((sum, item) => sum + (item.tokens ?? 0), 0)) + const strip = h('div', { class: 'zc-dna-strip', title: state.t('trend.dnaTip') }) + for (const item of items) { + const segment = h('button', { + type: 'button', + class: 'zc-dna-band', + style: { width: Math.max(0.08, ((item.tokens ?? 0) / total) * 100) + '%', background: CAT_COLOR[item.cat] }, + title: '#' + item.position + ' · ' + catLabel(item.cat) + ' · ' + formatTokens(item.tokens) + ' · ' + item.title, + onclick: () => openElement(item.key, state.step), + }) + strip.append(segment) + } + wrap.append(strip) + const top = [...items].sort((a, b) => (b.tokens ?? 0) - (a.tokens ?? 0)).slice(0, 6) + wrap.append(h('div', { class: 'zc-dna-top' }, top.map((item) => + h('button', { type: 'button', class: 'zc-dna-toprow', onclick: () => openElement(item.key, state.step), title: item.title }, + h('span', { class: 'zc-dna-pos' }, '#' + item.position), + h('i', { class: 'zc-dot', style: { background: CAT_COLOR[item.cat] } }), + h('span', { class: 'zc-dna-cat' }, catLabel(item.cat)), + h('span', { class: 'zc-dna-title' }, item.title), + h('b', null, formatTokens(item.tokens)), + ), + ))) + return wrap +} + +function showTrendTip(event, entry, previous) { + hideTrendTip() + const total = entry.prompt + const delta = previous ? total - previous.prompt : null + const tip = h( + 'div', + { class: 'zc-tip' }, + h('div', { class: 'zc-tip-head' }, h('b', null, '#' + entry.step + ' · T' + entry.turn), h('span', null, clockTime(entry.time))), + h('div', { class: 'zc-tip-row' }, h('span', null, state.t('trend.prompt')), h('b', null, formatTokens(total))), + delta != null ? h('div', { class: 'zc-tip-row' }, h('span', null, state.t('trend.deltaNet')), h('b', { class: delta >= 0 ? 'zc-pos' : 'zc-neg' }, (delta >= 0 ? '+' : '') + formatTokens(delta))) : null, + h('div', { class: 'zc-tip-row' }, h('span', null, state.t('trend.output')), h('b', null, formatTokens(entry.output))), + h('div', { class: 'zc-tip-row' }, h('span', null, state.t('trend.cacheRead')), h('b', null, formatTokens(entry.cacheRead))), + h('div', { class: 'zc-tip-parts' }, CATS.filter((cat) => (entry.parts?.[cat] ?? 0) > 0).map((cat) => + h('span', { class: 'zc-tip-part' }, h('i', { style: { background: CAT_COLOR[cat] } }), catLabel(cat), ' ', formatTokens(entry.parts[cat])), + )), + h('div', { class: 'zc-tip-foot' }, entry.model, entry.status), + ) + tip.dataset.trendTip = '1' + document.body.append(tip) + state._tip = tip + moveTrendTip(event) +} + +function moveTrendTip(event) { + const tip = state._tip + if (!tip) return + const width = 280 + const left = Math.min(window.innerWidth - width - 8, Math.max(8, event.clientX + 12)) + const top = Math.min(window.innerHeight - tip.offsetHeight - 8, Math.max(8, event.clientY + 12)) + tip.style.left = left + 'px' + tip.style.top = top + 'px' +} + +function hideTrendTip() { + state._tip?.remove() + state._tip = null +} + +function renderBrief() { + const detail = state.stepDetail + if (!detail) { + return state.stepLoading + ? h('div', { class: 'zc-brief is-loading' }, h('div', { class: 'zc-skel-line' }), h('div', { class: 'zc-skel-line' }), h('div', { class: 'zc-skel-line' })) + : null + } + if (state.stepError) return h('div', { class: 'zc-inline-error' }, state.stepError.message) + const brief = detail.brief + if (!brief) return null + const row = (label, content, onClick = null) => + h( + 'div', + { class: 'zc-brief-row' + (onClick ? ' is-clickable' : ''), onclick: onClick ?? undefined, title: onClick ? state.t('brief.jump') : undefined }, + h('span', { class: 'zc-brief-label' }, label), + content, + ) + const incoming = brief.incoming?.length + ? h('div', { class: 'zc-brief-in' }, + brief.incoming.slice(0, 3).map((item) => + h('span', { class: 'zc-brief-chip', title: item.preview, dataset: { cat: item.cat } }, + h('i', { style: { background: CAT_COLOR[item.cat] } }), + item.title, + h('b', null, formatTokens(item.tokens)), + ), + ), + brief.incomingCount > 3 ? h('span', { class: 'zc-muted' }, '+' + (brief.incomingCount - 3)) : null, + ) + : h('span', { class: 'zc-muted' }, state.t('common.none')) + const request = detail.request + const actual = request + ? h('div', { class: 'zc-brief-actual' }, + h('span', null, state.t('trend.actual')), + h('b', null, formatTokens(request.prompt)), + h('span', null, state.t('trend.output')), + h('b', null, formatTokens(request.output)), + request.prompt > 0 ? h('span', null, 'cache ' + pct((request.cacheRead / request.prompt) * 100)) : null, + ) + : null + return h( + 'div', + { class: 'zc-brief' }, + h('div', { class: 'zc-brief-head' }, state.t('trend.brief'), h('span', null, '#' + detail.step + ' · T' + detail.turn)), + actual, + row(state.t('brief.user'), h('span', { class: 'zc-brief-text', title: brief.user?.title }, brief.user?.title || state.t('common.none'))), + row(state.t('brief.in'), incoming), + row( + state.t('brief.response'), + h('span', { class: 'zc-brief-text', title: brief.response?.title }, + (brief.response?.title || state.t('brief.noResponse')) + + (brief.response?.toolCount ? ' · ' + state.t('brief.tools', { n: brief.response.toolCount }) : ''), + ), + () => { + const key = brief.response?.tools?.length ? detailFirstKey('tool') : detailFirstKey('assistant') + if (key) openElement(key, detail.step) + }, + ), + ) +} + +/* ------------------------------------------------------------------------------------------------ + * Browser + * ---------------------------------------------------------------------------------------------- */ + +function renderBrowserCard() { + const detail = state.stepDetail + const head = h('div', { class: 'zc-browser-controls' }) + head.append( + h('div', { class: 'zc-segmented zc-segmented-wide' }, + ['categories', 'changes', 'dna'].map((mode) => + h('button', { + type: 'button', + class: 'zc-segbtn' + (state.browserMode === mode ? ' is-active' : ''), + onclick: () => setBrowserMode(mode), + 'aria-pressed': state.browserMode === mode ? 'true' : 'false', + }, state.t('browser.mode.' + mode)), + ), + ), + state.browserMode !== 'dna' + ? h('label', { class: 'zc-field zc-field-inline' }, + h('span', null, state.t('browser.baseline')), + h('select', { + class: 'zc-select', + onchange: (event) => { + const value = event.target.value + state.baselineMode = value + saveView() + loadStep(state.step, { force: true, baseline: value }) + }, + }, + h('option', { value: 'off', selected: state.baselineMode === 'off' }, state.t('browser.baseline.off')), + h('option', { value: 'step', selected: state.baselineMode === 'step' }, state.t('browser.baseline.step')), + h('option', { value: 'turn', selected: state.baselineMode === 'turn' }, state.t('browser.baseline.turn')), + ), + ) + : null, + h('div', { class: 'zc-browser-filters' }, + h('label', { class: 'zc-search' }, icon('search', 14), h('input', { + type: 'search', + placeholder: state.t('browser.search'), + value: state.browserSearch, + oninput: (event) => { + state.browserSearch = event.target.value + clearTimeout(state.searchTimer) + state.searchTimer = setTimeout(() => { + state.groupExtra.clear() + loadStep(state.step, { force: true, search: state.browserSearch }) + }, 350) + }, + })), + h('select', { + class: 'zc-select zc-select-small', + 'aria-label': state.t('browser.sort'), + onchange: (event) => { + state.browserSort = event.target.value + loadStep(state.step, { force: true }) + }, + }, + h('option', { value: 'size', selected: state.browserSort === 'size' }, state.t('browser.sort.size')), + h('option', { value: 'name', selected: state.browserSort === 'name' }, state.t('browser.sort.name')), + h('option', { value: 'order', selected: state.browserSort === 'order' }, state.t('browser.sort.order')), + h('option', { value: 'calls', selected: state.browserSort === 'calls' }, state.t('browser.sort.calls')), + ), + ), + ) + const body = h('div', { class: 'zc-browser-body' }) + if (detail?.request) { + body.append( + h('div', { class: 'zc-browser-summary' }, + h('span', null, state.t('browser.estimated') + ' ≈' + formatTokens(detail.request.rawTotal ?? 0)), + h('b', null, state.t('browser.actual') + ' ' + formatTokens(detail.request.prompt ?? 0)), + detail.request.cacheRead > 0 ? h('span', null, 'cache ' + pct((detail.request.cacheRead / Math.max(1, detail.request.prompt)) * 100)) : null, + ), + ) + } + if (state.stepLoading && !detail) body.append(h('div', { class: 'zc-empty' }, state.t('browser.loadFailed'))) + else if (state.stepError) body.append(h('div', { class: 'zc-inline-error' }, state.stepError.message, button(state.t('action.retry'), { onClick: () => loadStep(state.step, { force: true }), class: 'zc-btn-tiny' }))) + else if (!detail) body.append(h('div', { class: 'zc-empty' }, state.t('browser.empty'))) + else { + if (detail.header?.missing) body.append(h('div', { class: 'zc-note' }, state.t('browser.headerMissing'))) + else if (detail.header?.estimated) body.append(h('div', { class: 'zc-note' }, state.t('browser.headerEstimated'))) + if (state.browserMode === 'changes') body.append(renderChanges(detail)) + else if (state.browserMode === 'dna') body.append(renderDna(detail)) + else body.append(renderCategories(detail)) + } + return card(state.t('browser.title'), { + className: 'zc-card-browser', + subtitle: detail ? state.t('browser.subtitle', { step: detail.step, count: (detail.groups ?? []).reduce((sum, group) => sum + (group.count ?? 0), 0), tokens: formatTokens(detail.request?.prompt ?? 0) }) : null, + body: h('div', null, head, body), + }) +} + +function groupItems(detail, group) { + const extra = state.groupExtra.get(group.cat)?.items ?? [] + const seen = new Set() + const items = [...(group.items ?? []), ...extra].filter((item) => { + if (seen.has(item.key)) return false + seen.add(item.key) + return true + }) + const search = state.browserSearch.trim().toLowerCase() + return items.filter((item) => { + if (search && ![item.title, item.preview, item.tool, item.skill].some((value) => String(value ?? '').toLowerCase().includes(search))) return false + if (group.cat === 'assistant' && state.kindFilter) { + if (state.kindFilter === 'thinking' && item.kind !== 'thinking') return false + if (state.kindFilter === 'tools' && item.kind !== 'tool-call') return false + if (state.kindFilter === 'answer' && item.kind !== 'answer') return false + } + return true + }) +} + +function renderCategories(detail) { + const wrap = h('div', { class: 'zc-cats' }) + if (!detail.groups?.length) { + wrap.append(h('div', { class: 'zc-empty' }, state.t('browser.empty'))) + return wrap + } + for (const group of detail.groups) { + const items = groupItems(detail, group) + if (items.length === 0 && state.browserSearch) continue + const open = state.expandedCats.has(group.cat) + const diff = detail.diff?.categories?.find((row) => row.cat === group.cat) + const head = h( + 'button', + { + type: 'button', + class: 'zc-cat-head', + 'aria-expanded': open ? 'true' : 'false', + onclick: () => { + if (open) state.expandedCats.delete(group.cat) + else state.expandedCats.add(group.cat) + render() + }, + }, + h('i', { class: 'zc-dot', style: { background: CAT_COLOR[group.cat] } }), + h('span', { class: 'zc-cat-name' }, catLabel(group.cat)), + h('span', { class: 'zc-cat-count' }, group.count), + h('span', { class: 'zc-cat-tokens' }, formatTokens(group.tokens)), + diff && (diff.added || diff.removed || diff.delta) + ? h('span', { class: 'zc-diff-badges' }, + diff.added ? h('em', { class: 'zc-badge-add' }, '+' + diff.added) : null, + diff.removed ? h('em', { class: 'zc-badge-remove' }, '−' + diff.removed) : null, + diff.delta ? h('em', { class: diff.delta > 0 ? 'zc-badge-add' : 'zc-badge-remove' }, (diff.delta > 0 ? '+' : '') + formatTokens(diff.delta)) : null, + ) + : null, + h('span', { class: 'zc-cat-chevron' }, icon(open ? 'down' : 'right', 14)), + ) + const body = h('div', { class: 'zc-cat-body' }) + if (open) { + if (group.cat === 'assistant') { + body.append( + h('div', { class: 'zc-kindchips' }, + [['thinking', state.t('browser.kind.thinking')], ['tools', state.t('browser.kind.tools')], ['answer', state.t('browser.kind.answer')]].map(([kind, label]) => + h('button', { + type: 'button', + class: 'zc-kindchip' + (state.kindFilter === kind ? ' is-active' : ''), + onclick: () => { state.kindFilter = state.kindFilter === kind ? null : kind; render() }, + }, label), + ), + ), + ) + } + for (const item of items.slice(0, 60)) body.append(renderItemRow(item)) + const extra = state.groupExtra.get(group.cat) + if (group.more > 0 && !state.browserSearch) { + body.append( + h('button', { type: 'button', class: 'zc-morebtn', onclick: () => loadGroup(group.cat) }, + state.t('browser.more', { n: extra ? Math.max(0, group.more - (extra.items?.length ?? 0)) : group.more }), + icon('down', 14), + ), + ) + } + } + wrap.append(h('div', { class: 'zc-cat' }, head, body)) + } + if (state.browserSearch && !wrap.querySelector('.zc-cat')) wrap.append(h('div', { class: 'zc-empty' }, state.t('browser.searchEmpty'))) + return wrap +} + +function renderItemRow(item) { + const enter = item.enter?.step + ? h('span', { class: 'zc-enter' }, item.enter.live ? state.t('browser.enterLive') : state.t('browser.enter', { step: item.enter.step })) + : null + const status = item.status + ? h('span', { class: 'zc-status-dot', dataset: { status: item.status }, title: item.status }) + : null + return h( + 'button', + { + type: 'button', + class: 'zc-itemrow', + title: item.preview || item.title, + onclick: () => openElement(item.key, state.step), + }, + h('span', { class: 'zc-item-token' }, formatTokens(item.tokens)), + h( + 'span', + { class: 'zc-item-main' }, + h('span', { class: 'zc-item-title' }, item.title || item.key), + item.preview ? h('span', { class: 'zc-item-preview' }, item.preview) : null, + h('span', { class: 'zc-item-meta' }, + item.tool ? h('span', { class: 'zc-chip' }, item.tool, item.source ? h('em', null, toolSourceLabel(item.source)) : null) : null, + item.skill ? h('span', { class: 'zc-chip' }, item.skill) : null, + item.form ? h('span', { class: 'zc-chip' }, state.t('form.' + item.form)) : null, + item.calls != null && item.cat === 'tools' ? h('span', { class: 'zc-chip' }, state.t('browser.calls', { n: formatCount(item.calls) })) : null, + item.kind ? h('span', { class: 'zc-chip zc-chip-soft' }, state.t('kind.' + item.kind)) : null, + status, + enter, + ), + ), + h('span', { class: 'zc-item-go' }, icon('right', 14)), + ) +} + +function renderChanges(detail) { + const diff = detail.diff + const wrap = h('div', { class: 'zc-changes' }) + if (!diff?.available) { + wrap.append(h('div', { class: 'zc-empty' }, state.t('browser.changes.unavailable'))) + return wrap + } + wrap.append(h('div', { class: 'zc-changes-cats' }, diff.categories.map((row) => + h('div', { class: 'zc-change-cat' }, + h('i', { class: 'zc-dot', style: { background: CAT_COLOR[row.cat] } }), + h('span', null, catLabel(row.cat)), + h('em', { class: row.delta > 0 ? 'zc-pos' : row.delta < 0 ? 'zc-neg' : '' }, (row.delta > 0 ? '+' : '') + formatTokens(row.delta)), + row.added ? h('span', { class: 'zc-badge-add' }, '+' + row.added) : null, + row.removed ? h('span', { class: 'zc-badge-remove' }, '−' + row.removed) : null, + ), + ))) + const section = (title, items, cls) => { + if (!items?.length) return null + return h('div', { class: 'zc-change-section' }, + h('div', { class: 'zc-change-title ' + cls }, title, h('b', null, items.length)), + items.slice(0, 60).map((item) => renderItemRow(item)), + ) + } + const added = section(state.t('browser.changes.added'), diff.added, 'tone-add') + const removed = section(state.t('browser.changes.removed'), diff.removed, 'tone-remove') + if (!added && !removed && !diff.changed?.length) wrap.append(h('div', { class: 'zc-empty' }, state.t('browser.changes.empty'))) + if (added) wrap.append(added) + if (removed) wrap.append(removed) + if (diff.changed?.length) { + wrap.append(h('div', { class: 'zc-change-section' }, + h('div', { class: 'zc-change-title' }, state.t('browser.changes.changed'), h('b', null, diff.changed.length)), + diff.changed.slice(0, 20).map((pair) => h('div', { class: 'zc-changed-row' }, + h('span', null, pair.after?.title), + h('span', { class: 'zc-muted' }, formatTokens(pair.before?.tokens) + ' → ' + formatTokens(pair.after?.tokens)), + )), + )) + } + wrap.append(h('div', { class: 'zc-note' }, state.t('browser.changes.note'))) + return wrap +} + +function renderDna(detail) { + const wrap = h('div', { class: 'zc-dna' }) + const items = state.dnaData?.items ?? detail.dna ?? [] + if (state.dnaLoading && !items.length) { + wrap.append(h('div', { class: 'zc-empty' }, state.t('app.tagline'))) + return wrap + } + if (!items.length) { + wrap.append(h('div', { class: 'zc-empty' }, state.t('browser.empty'))) + return wrap + } + wrap.append(h('div', { class: 'zc-note' }, state.t('browser.dnaTip'))) + for (const item of [...items].reverse()) { + wrap.append( + h('button', { type: 'button', class: 'zc-dna-row', onclick: () => openElement(item.key, state.step), title: item.preview }, + h('span', { class: 'zc-dna-pos' }, state.t('browser.dnaPos', { n: item.position })), + h('i', { class: 'zc-dot', style: { background: CAT_COLOR[item.cat] } }), + h('span', { class: 'zc-dna-cat' }, catLabel(item.cat)), + item.enter?.step ? h('span', { class: 'zc-enter' }, 'T' + item.enter.turn + ' S' + item.enter.step) : null, + h('span', { class: 'zc-dna-title' }, item.title), + h('span', { class: 'zc-dna-token' }, formatTokens(item.tokens)), + ), + ) + } + if (state.dnaData?.nextOffset != null) { + wrap.append(h('button', { type: 'button', class: 'zc-morebtn', onclick: () => loadDna({ append: true }) }, state.t('action.loadMore'), icon('down', 14))) + } + return wrap +} + +/* ------------------------------------------------------------------------------------------------ + * Events and files + * ---------------------------------------------------------------------------------------------- */ + +function renderEventsCard() { + const events = state.snapshot.events ?? [] + const counts = eventCounts() + const kinds = ['inject', 'compaction', 'model', 'rewind', 'mcp', 'mode', 'prune'].filter((kind) => counts[kind] > 0) + const head = h('div', { class: 'zc-event-filters' }) + const activeKinds = () => kinds.filter((kind) => state.eventKinds.has(kind)) + head.append( + h('button', { + type: 'button', + class: 'zc-kindchip' + (activeKinds().length === kinds.length ? ' is-active' : ''), + onclick: () => { state.eventKinds = new Set(kinds); render() }, + }, state.t('events.all')), + ) + for (const kind of kinds) { + head.append( + h('button', { + type: 'button', + class: 'zc-kindchip' + (state.eventKinds.has(kind) ? ' is-active' : ''), + onclick: () => { + const active = activeKinds() + if (active.length === kinds.length) state.eventKinds = new Set([kind]) + else if (state.eventKinds.has(kind)) { + if (active.length === 1) state.eventKinds = new Set(kinds) + else state.eventKinds.delete(kind) + } else state.eventKinds.add(kind) + render() + }, + }, state.t('events.' + kind), h('b', null, counts[kind])), + ) + } + const filtered = events.filter((event) => state.eventKinds.has(event.kind)).slice().reverse() + const shown = state.eventsAll ? filtered : filtered.slice(0, 12) + const list = h('div', { class: 'zc-events' }) + if (filtered.length === 0) list.append(h('div', { class: 'zc-empty' }, events.length ? state.t('events.noneMatch') : state.t('events.empty'))) + for (const event of shown) list.append(renderEventRow(event)) + if (!state.eventsAll && filtered.length > 12) { + list.append(h('button', { type: 'button', class: 'zc-morebtn', onclick: () => { state.eventsAll = true; render() } }, state.t('events.showAll', { n: filtered.length }), icon('down', 14))) + } else if (state.eventsAll && filtered.length > 12) { + list.append(h('button', { type: 'button', class: 'zc-morebtn', onclick: () => { state.eventsAll = false; render() } }, state.t('action.showLess'))) + } + return card(state.t('events.title'), { className: 'zc-card-events', right: h('div', { class: 'zc-card-right' }, state.t('events.showAll', { n: filtered.length })), body: h('div', null, head, list) }) +} + +function renderEventRow(event) { + const iconChar = event.kind === 'compaction' ? '✂' : event.kind === 'model' ? '⇄' : event.kind === 'rewind' ? '↶' : event.kind === 'mcp' ? '⚙' : event.kind === 'mode' ? '◐' : '↳' + const title = + event.kind === 'inject' + ? event.name || state.t('form.' + (event.form ?? 'context')) + : event.kind === 'compaction' + ? state.t('events.trigger.' + (event.trigger === 'auto' ? 'auto' : 'manual')) + ' · ' + state.t('events.status.' + (event.status ?? 'unknown')) + : event.kind === 'model' + ? event.from + ' → ' + event.to + : event.kind === 'rewind' + ? state.t('events.rewindDetail') + : event.kind === 'mcp' + ? event.name || state.t('events.mcpDetail') + : state.t('events.' + event.kind) + const detail = + event.kind === 'inject' + ? event.text || state.t('events.injectDetail') + : event.kind === 'compaction' + ? (event.summarizedCount != null ? state.t('events.summarized', { n: event.summarizedCount, kept: event.keptCount ?? '—' }) : event.reason || state.t('events.compactionDetail')) + : event.kind === 'model' + ? state.t('events.modelDetail') + : event.detail || '' + const delta = event.delta != null ? h('span', { class: event.delta > 0 ? 'zc-pos' : 'zc-neg' }, (event.delta > 0 ? '+' : '') + formatTokens(event.delta)) : null + return h( + 'button', + { type: 'button', class: 'zc-eventrow', onclick: () => openEvent(event), title: detail }, + h('span', { class: 'zc-event-icon', dataset: { kind: event.kind } }, iconChar), + h('span', { class: 'zc-event-main' }, + h('span', { class: 'zc-event-title' }, title, delta), + h('span', { class: 'zc-event-detail' }, detail), + h('span', { class: 'zc-event-meta' }, + event.step ? state.t('events.atStep', { step: event.step }) : null, + h('span', null, clockTime(event.time)), + event.kind === 'compaction' && event.preTokens != null ? h('span', null, formatTokens(event.preTokens) + ' → ' + formatTokens(event.postTokens)) : null, + event.kind === 'inject' && event.tokens != null ? h('span', null, '≈' + formatTokens(event.tokens)) : null, + ), + ), + h('span', { class: 'zc-event-go' }, icon('right', 14)), + ) +} + +function fileEntries() { + const detail = state.stepDetail?.files + if (detail?.entries?.length) return detail.entries + return state.snapshot.files?.entries ?? [] +} + +function fileSummary() { + return state.stepDetail?.files ?? state.snapshot.files ?? { totals: {}, entries: [] } +} + +function renderFilesCard() { + const summary = fileSummary() + const totals = summary.totals ?? {} + const head = h('div', { class: 'zc-file-filters' }) + const kindSpec = [ + ['read', state.t('files.read'), totals.read?.files ?? 0], + ['write', state.t('files.written'), totals.write?.files ?? 0], + ['search', state.t('files.searched'), totals.search?.files ?? 0], + ['image', state.t('files.images'), totals.image?.files ?? 0], + ] + head.append(h('button', { + type: 'button', + class: 'zc-kindchip' + (state.fileKinds.size === 4 ? ' is-active' : ''), + onclick: () => { state.fileKinds = new Set(['read', 'write', 'search', 'image']); render() }, + }, state.t('files.all'))) + for (const [kind, label, count] of kindSpec) { + head.append(h('button', { + type: 'button', + class: 'zc-kindchip' + (state.fileKinds.has(kind) ? ' is-active' : ''), + dataset: { fileKind: kind }, + onclick: () => { + if (state.fileKinds.size === 4) state.fileKinds = new Set([kind]) + else if (state.fileKinds.has(kind)) { + if (state.fileKinds.size === 1) state.fileKinds = new Set(['read', 'write', 'search', 'image']) + else state.fileKinds.delete(kind) + } else state.fileKinds.add(kind) + render() + }, + }, label, h('b', null, count))) + } + head.append( + h('label', { class: 'zc-search zc-search-small' }, icon('search', 14), h('input', { + type: 'search', + placeholder: state.t('files.search'), + value: state.fileSearch, + oninput: (event) => { state.fileSearch = event.target.value; render() }, + })), + h('select', { + class: 'zc-select zc-select-small', + 'aria-label': state.t('files.sort'), + onchange: (event) => { state.fileSort = event.target.value; saveView(); render() }, + }, + ...[['count', state.t('files.sort.count')], ['latest', state.t('files.sort.latest')], ['path', state.t('files.sort.path')], ['name', state.t('files.sort.name')], ['added', state.t('files.sort.added')]].map(([value, label]) => + h('option', { value, selected: state.fileSort === value }, label), + ), + ), + ) + let entries = fileEntries().filter((entry) => { + if (!state.fileKinds.has('image') && entry.form === 'image') return false + if (!state.fileKinds.has('read') && entry.reads) return false + if (!state.fileKinds.has('write') && entry.writes) return false + if (!state.fileKinds.has('search') && entry.searches) return false + if (entry.form === 'image' && !state.fileKinds.has('image')) return false + if (state.fileSearch && !entry.path.toLowerCase().includes(state.fileSearch.toLowerCase())) return false + return true + }) + entries = [...entries].sort((a, b) => { + if (state.fileSort === 'path') return a.path.localeCompare(b.path) + if (state.fileSort === 'name') return (a.path.split('/').pop() ?? '').localeCompare(b.path.split('/').pop() ?? '') + if (state.fileSort === 'latest') return (b.latest ?? 0) - (a.latest ?? 0) + if (state.fileSort === 'added') return (b.added ?? 0) - (a.added ?? 0) + return (b.reads + b.writes + b.searches) - (a.reads + a.writes + a.searches) + }) + const shown = state.filesAll ? entries : entries.slice(0, 12) + const list = h('div', { class: 'zc-files' }) + if (entries.length === 0) list.append(h('div', { class: 'zc-empty' }, fileEntries().length ? state.t('files.noneMatch') : state.t('files.empty'))) + for (const entry of shown) list.append(renderFileRow(entry, summary)) + if (!state.filesAll && entries.length > 12) list.append(h('button', { type: 'button', class: 'zc-morebtn', onclick: () => { state.filesAll = true; render() } }, state.t('events.showAll', { n: entries.length }), icon('down', 14))) + else if (state.filesAll && entries.length > 12) list.append(h('button', { type: 'button', class: 'zc-morebtn', onclick: () => { state.filesAll = false; render() } }, state.t('action.showLess'))) + return card(state.t('files.title'), { + className: 'zc-card-files', + subtitle: state.step ? state.t('files.subtitle', { step: state.step }) : null, + body: h('div', { class: 'zc-files-body' }, head, list), + right: null, + }) +} + +function fileGlyph(entry) { + if (entry.form === 'image') return h('span', { class: 'zc-fileglyph' }, '🖼') + const name = entry.path.split('/').pop() ?? '' + if (/\.(tsx?|jsx?|mjs|cjs)$/i.test(name)) return h('span', { class: 'zc-fileglyph zc-fileglyph-code' }, name.endsWith('x') && name.includes('t') ? 'TSX' : 'TS') + if (/\.(py)$/i.test(name)) return h('span', { class: 'zc-fileglyph zc-fileglyph-code' }, 'PY') + if (/\.(md|mdx)$/i.test(name)) return h('span', { class: 'zc-fileglyph' }, '📝') + if (/\.(json|ya?ml|toml)$/i.test(name)) return h('span', { class: 'zc-fileglyph' }, '⚙') + if (/package-lock|pnpm-lock/.test(name)) return h('span', { class: 'zc-fileglyph' }, '🔒') + return h('span', { class: 'zc-fileglyph' }, '📄') +} + +function renderFileRow(entry, summary) { + const open = state.expandedFiles.has(entry.path) + const detailEntry = state.stepDetail?.files?.entries?.find((candidate) => candidate.path === entry.path) + const row = h('div', { class: 'zc-filerow' + (open ? ' is-open' : '') }) + const head = h( + 'button', + { + type: 'button', + class: 'zc-filehead', + onclick: () => { + if (open) state.expandedFiles.delete(entry.path) + else state.expandedFiles.add(entry.path) + if (!state.stepDetail && state.step) loadStep(state.step) + render() + }, + title: entry.path, + }, + fileGlyph(entry), + h('span', { class: 'zc-filemain' }, + h('span', { class: 'zc-filepath' }, entry.path), + h('span', { class: 'zc-filemeta' }, + entry.reads ? h('span', { class: 'zc-chip' }, state.t('files.read') + ' ' + entry.reads) : null, + entry.writes ? h('span', { class: 'zc-chip' }, state.t('files.written') + ' ' + entry.writes) : null, + entry.searches ? h('span', { class: 'zc-chip' }, state.t('files.searched') + ' ' + entry.searches) : null, + entry.pattern ? h('span', { class: 'zc-chip zc-chip-soft' }, state.t('files.pattern')) : null, + entry.added ? h('span', { class: 'zc-pos' }, state.t('files.added', { n: entry.added })) : null, + entry.removed ? h('span', { class: 'zc-neg' }, state.t('files.removed', { n: entry.removed })) : null, + ), + ), + h('span', { class: 'zc-fileops' }, Array.isArray(entry.ops) ? entry.ops.length : entry.ops ?? ''), + icon(open ? 'down' : 'right', 14), + ) + row.append(head) + if (open) { + const ops = detailEntry?.ops ?? [] + const body = h('div', { class: 'zc-fileops-body' }) + if (ops.length === 0) body.append(h('div', { class: 'zc-note' }, state.stepDetail ? state.t('files.opsTitle') : state.t('browser.loadFailed'))) + for (const op of ops.slice(0, 60)) { + body.append(h('button', { + type: 'button', + class: 'zc-oprow', + onclick: () => op.key && openElement(op.key, state.step), + title: op.detail ?? op.tool, + }, + h('span', { class: 'zc-opkind', dataset: { kind: op.kind } }, state.t('files.op' + (op.kind === 'read' ? 'Read' : op.kind === 'write' ? 'Write' : 'Search'))), + h('span', { class: 'zc-optool' }, op.tool), + h('span', { class: 'zc-optime' }, clockTime(op.time)), + op.added ? h('span', { class: 'zc-pos' }, '+' + op.added) : null, + op.removed ? h('span', { class: 'zc-neg' }, '−' + op.removed) : null, + op.est ? h('span', { class: 'zc-chip zc-chip-soft' }, state.t('files.shellEstimate')) : null, + h('span', { class: 'zc-opgo' }, icon('right', 12)), + )) + } + if (ops.length > 60) body.append(h('div', { class: 'zc-note' }, '…')) + body.append(h('div', { class: 'zc-file-actions' }, + button(state.t('action.copyPath'), { onClick: () => copyText(entry.path), class: 'zc-btn-tiny' }), + )) + row.append(body) + } + return row +} + +/* ------------------------------------------------------------------------------------------------ + * Coverage card + * ---------------------------------------------------------------------------------------------- */ + +function renderCoverageCard() { + const coverage = state.snapshot.coverage ?? {} + const warnings = coverage.warnings ?? [] + const body = h('div', { class: 'zc-coverage' }) + if (warnings.length === 0) body.append(h('div', { class: 'zc-good' }, icon('check', 15), state.t('coverage.good'))) + if (warnings.includes('retention-off')) body.append(h('div', { class: 'zc-note zc-note-warn' }, state.t('coverage.retentionOff'))) + if (warnings.includes('rollout-missing')) body.append(h('div', { class: 'zc-note zc-note-warn' }, state.t('coverage.rolloutMissing'))) + if (warnings.includes('header-estimated')) body.append(h('div', { class: 'zc-note' }, state.t('coverage.headerEstimated', { n: coverage.headerEstimated }))) + if (warnings.includes('header-missing')) body.append(h('div', { class: 'zc-note zc-note-warn' }, state.t('coverage.headerMissing', { n: coverage.headerMissing }))) + body.append( + h('div', { class: 'zc-coverage-grid' }, + h('span', null, state.t('coverage.rollout', { value: state.t('coverage.rollout.' + (coverage.rollout ?? 'none')) })), + h('span', null, state.t('coverage.retention', { value: coverage.fullRetention == null ? state.t('coverage.unknown') : coverage.fullRetention ? state.t('coverage.on') : state.t('coverage.off') })), + h('span', null, state.t('coverage.headerExact', { n: coverage.headerExact ?? 0 })), + h('span', null, state.t('coverage.headerApprox', { n: coverage.headerEstimated ?? 0 })), + ), + ) + body.append(h('div', { class: 'zc-note' }, state.t('coverage.learn'))) + return card(state.t('coverage.title'), { className: 'zc-card-coverage', body }) +} + +/* ------------------------------------------------------------------------------------------------ + * Fleet + * ---------------------------------------------------------------------------------------------- */ + +function renderFleet() { + const wrapper = h('div', { class: 'zc-fleet' }) + if (state.fleetLoading && !state.fleet) { + wrapper.append(h('div', { class: 'zc-empty' }, state.t('app.tagline'))) + return wrapper + } + if (state.fleetError) { + wrapper.append(h('div', { class: 'zc-inline-error' }, state.fleetError, button(state.t('action.retry'), { onClick: loadFleet, class: 'zc-btn-tiny' }))) + return wrapper + } + const fleet = state.fleet + if (!fleet) return wrapper + const bill = fleet.nodes.reduce((sum, node) => sum + (node.usage?.billed ?? 0), 0) + const cost = fleet.nodes.some((node) => node.usage?.cost != null) ? fleet.nodes.reduce((sum, node) => sum + (node.usage?.cost ?? 0), 0) : null + const running = fleet.nodes.filter((node) => node.running).length + const kpis = h('div', { class: 'zc-fleet-kpis' }, + h('div', { class: 'zc-kpi' }, h('b', null, fleet.nodes.length), h('span', null, state.t('fleet.agents'))), + h('div', { class: 'zc-kpi' }, h('b', null, running), h('span', null, state.t('fleet.running'))), + h('div', { class: 'zc-kpi' }, h('b', null, formatTokens(bill)), h('span', null, state.t('fleet.billed'))), + h('div', { class: 'zc-kpi' }, h('b', null, costText(cost)), h('span', null, state.t('fleet.cost'))), + ) + wrapper.append(kpis) + const tree = h('div', { class: 'zc-agent-tree' }) + const roots = fleet.nodes.filter((node) => !node.parentId || !fleet.nodes.some((candidate) => candidate.id === node.parentId)) + const byParent = new Map() + for (const node of fleet.nodes) { + if (!node.parentId) continue + const list = byParent.get(node.parentId) ?? [] + list.push(node) + byParent.set(node.parentId, list) + } + const emit = (node, depth) => { + tree.append(renderAgentCard(node, depth)) + for (const child of byParent.get(node.id) ?? []) emit(child, depth + 1) + } + for (const root of roots) emit(root, 0) + if (!roots.length) wrapper.append(h('div', { class: 'zc-empty' }, state.t('fleet.empty'))) + wrapper.append(tree) + wrapper.append(h('div', { class: 'zc-note' }, state.t('fleet.noSwitch'))) + if (fleet.truncated) wrapper.append(h('div', { class: 'zc-note zc-note-warn' }, state.t('fleet.truncated', { n: fleet.nodes.length }))) + return wrapper +} + +function renderAgentCard(node, depth) { + const status = node.running ? 'running' : node.status ?? (node.calls ? 'completed' : 'idle') + const role = node.role === 'self' ? state.t('fleet.self') : node.role === 'ancestor' ? state.t('fleet.ancestor') : node.role === 'sibling' ? state.t('fleet.sibling') : state.t('fleet.child') + return h( + 'div', + { class: 'zc-agent-node', style: { paddingLeft: depth * 16 + 'px' }, dataset: { role: node.role } }, + depth > 0 ? h('span', { class: 'zc-agent-rail', style: { left: (depth - 1) * 18 + 9 + 'px' } }) : null, + h( + 'button', + { type: 'button', class: 'zc-agent-card' + (node.id === state.snapshot.session.id ? ' is-self' : ''), onclick: () => openMember(node.id), title: state.t('fleet.open') }, + h('span', { class: 'zc-agent-status ' + status }, h('i', null), status === 'running' ? h('em', { class: 'zc-pulse' }) : null), + h('span', { class: 'zc-agent-main' }, + h('span', { class: 'zc-agent-title' }, node.title || node.id), + h('span', { class: 'zc-agent-meta' }, + h('span', { class: 'zc-chip' }, role), + node.taskType ? h('span', { class: 'zc-chip zc-chip-soft' }, node.taskType) : null, + node.model ? h('span', { class: 'zc-chip zc-chip-soft' }, node.model) : null, + h('span', { class: 'zc-muted' }, state.t('fleet.calls', { n: node.calls ?? 0 })), + ), + h('span', { class: 'zc-agent-usage' }, + h('span', null, formatTokens(node.usage?.billed ?? 0)), + h('span', { class: 'zc-muted' }, costText(node.usage?.cost)), + node.cacheHitRate != null ? h('span', { class: 'zc-muted' }, state.t('stats.cacheHit') + ' ' + pct(node.cacheHitRate)) : null, + ), + node.contextPct != null + ? h('span', { class: 'zc-agent-bar', title: state.t('fleet.context') + ' ' + pct(node.contextPct) }, + h('span', { class: 'zc-agent-bar-fill', style: { width: Math.min(100, node.contextPct) + '%' } }), + h('em', null, pct(node.contextPct)), + ) + : null, + ), + icon('right', 14), + ), + ) +} + +/* ------------------------------------------------------------------------------------------------ + * Insights + * ---------------------------------------------------------------------------------------------- */ + +function renderInsights() { + const wrapper = h('div', { class: 'zc-insights' }) + const controls = h('div', { class: 'zc-insights-controls' }, + h('div', { class: 'zc-segmented' }, + [['7d', state.t('insights.range.7d')], ['30d', state.t('insights.range.30d')], ['all', state.t('insights.range.all')]].map(([range, label]) => + h('button', { + type: 'button', + class: 'zc-segbtn' + (state.insightsRange === range ? ' is-active' : ''), + onclick: () => { + if (state.insightsRange === range) return + state.insightsRange = range + state.insights = null + state.insightsDay = null + saveView() + loadInsights() + }, + }, label), + ), + ), + h('label', { class: 'zc-search zc-search-small' }, icon('search', 14), h('input', { + type: 'search', placeholder: state.t('insights.search'), value: state.insightsSearch, + oninput: (event) => { state.insightsSearch = event.target.value; render() }, + })), + h('select', { class: 'zc-select zc-select-small', onchange: (event) => { state.insightsSort = event.target.value; render() } }, + h('option', { value: 'recent', selected: state.insightsSort === 'recent' }, state.t('insights.sort.recent')), + h('option', { value: 'tokens', selected: state.insightsSort === 'tokens' }, state.t('insights.sort.tokens')), + h('option', { value: 'context', selected: state.insightsSort === 'context' }, state.t('insights.sort.context')), + ), + h('select', { class: 'zc-select zc-select-small', onchange: (event) => { state.insightsGroup = event.target.value; render() } }, + h('option', { value: 'none', selected: state.insightsGroup === 'none' }, state.t('insights.group.none')), + h('option', { value: 'workspace', selected: state.insightsGroup === 'workspace' }, state.t('insights.group.workspace')), + ), + iconButton('refresh', state.t('action.refresh'), () => { state.insights = null; state.insightsDay = null; loadInsights() }, 'zc-iconbtn-soft'), + ) + wrapper.append(controls) + if (state.insightsLoading && !state.insights) { + wrapper.append(h('div', { class: 'zc-empty' }, state.t('app.tagline'))) + return wrapper + } + if (state.insightsError) { + wrapper.append(h('div', { class: 'zc-inline-error' }, state.insightsError, button(state.t('action.retry'), { onClick: () => loadInsights(), class: 'zc-btn-tiny' }))) + return wrapper + } + const insights = state.insights + if (!insights) return wrapper + const kpi = insights.kpi + wrapper.append( + h('div', { class: 'zc-kpi-grid' }, + h('div', { class: 'zc-kpi' }, h('b', null, formatCount(kpi.sessions)), h('span', null, state.t('insights.sessions'))), + h('div', { class: 'zc-kpi' }, h('b', null, formatTokens(kpi.billed)), h('span', null, state.t('insights.billed'))), + h('div', { class: 'zc-kpi' }, h('b', null, costText(kpi.cost)), h('span', null, state.t('insights.cost'))), + h('div', { class: 'zc-kpi' }, h('b', null, pct(kpi.cacheHitRate)), h('span', null, state.t('insights.cacheHit'))), + h('div', { class: 'zc-kpi' }, h('b', null, formatCount(kpi.calls ?? 0)), h('span', null, state.t('insights.calls'))), + h('div', { class: 'zc-kpi' }, h('b', null, pct(kpi.avgContextPct)), h('span', null, state.t('insights.context'))), + ), + ) + const grids = h('div', { class: 'zc-insight-grid' }, + card(state.t('insights.usage7'), { className: 'zc-card-mini', body: renderDailyChart(insights.daily) }), + card(state.t('insights.heatmap'), { className: 'zc-card-mini', body: renderHeatmap(insights.daily) }), + card(state.t('insights.tokenMix'), { className: 'zc-card-mini', body: renderTokenMix(insights) }), + card(state.t('insights.composition'), { + className: 'zc-card-mini', + subtitle: insights.composition ? state.t('insights.compositionNote', { n: insights.compositionSessions }) : null, + body: insights.composition + ? renderCompositionDonut(insights.composition) + : h('div', { class: 'zc-note' }, state.insightsCompositionLoading ? state.t('insights.compositionLoading') : state.t('common.none')), + }), + ) + wrapper.append(grids) + const filtered = filterInsightsCards(insights.sessionCards) + const cardsWrap = h('div', { class: 'zc-session-cards' }) + if (filtered.length === 0) cardsWrap.append(h('div', { class: 'zc-empty' }, insights.sessionCards.length ? state.t('insights.noneMatch') : state.t('insights.empty'))) + let lastGroup = null + for (const cardData of filtered) { + if (state.insightsGroup === 'workspace') { + const group = cardData.directory + if (group !== lastGroup) { + cardsWrap.append(h('div', { class: 'zc-group-head' }, icon('folder', 14), group)) + lastGroup = group + } + } + cardsWrap.append(renderSessionCard(cardData)) + } + wrapper.append(cardsWrap) + if (insights.sessionsTotal > insights.sessionCards.length) { + wrapper.append(h('div', { class: 'zc-note' }, state.t('insights.truncated', { shown: insights.sessionCards.length, total: insights.sessionsTotal }))) + } + wrapper.append(h('div', { class: 'zc-note' }, state.t('insights.coverage'))) + return wrapper +} + +function filterInsightsCards(cards) { + let list = [...cards] + if (state.insightsDay) list = list.filter((card) => dateKey(card.latestAt ?? card.updatedAt) === state.insightsDay) + const search = state.insightsSearch.trim().toLowerCase() + if (search) list = list.filter((card) => [card.title, card.directory, card.model].some((value) => String(value ?? '').toLowerCase().includes(search))) + if (state.insightsSort === 'tokens') list.sort((a, b) => (b.usage?.billed ?? 0) - (a.usage?.billed ?? 0)) + else if (state.insightsSort === 'context') list.sort((a, b) => (b.contextPct ?? 0) - (a.contextPct ?? 0)) + else list.sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0)) + return list +} + +function renderDailyChart(daily) { + if (!daily?.length) return h('div', { class: 'zc-empty' }, state.t('insights.empty')) + const last = [...daily].slice(-7) + const max = Math.max(1, ...last.map((day) => day.input + day.output)) + const chart = h('div', { class: 'zc-daily', title: state.t('insights.usage7Tip') }) + for (const day of last) { + const total = (day.input ?? 0) + (day.output ?? 0) + chart.append( + h('div', { class: 'zc-daily-col', title: day.day + ' · ' + formatTokens(total) }, + h('span', { class: 'zc-daily-bar', style: { height: Math.max(2, (total / max) * 100) + '%' } }), + h('span', { class: 'zc-daily-label' }, day.day.slice(5)), + h('span', { class: 'zc-daily-cost' }, day.cost != null ? costText(day.cost) : ''), + ), + ) + } + return chart +} + +function renderHeatmap(daily) { + const map = new Map((daily ?? []).map((day) => [day.day, day])) + const days = [] + const today = new Date() + for (let i = 55; i >= 0; i--) { + const date = new Date(today.getFullYear(), today.getMonth(), today.getDate() - i) + const key = dateKey(date.getTime()) + days.push({ key, value: map.get(key), date }) + } + const values = days.map((day) => (day.value?.input ?? 0) + (day.value?.output ?? 0)) + const max = Math.max(1, ...values) + const grid = h('div', { class: 'zc-heatmap', title: state.t('insights.heatmapTip') }) + for (const day of days) { + const total = (day.value?.input ?? 0) + (day.value?.output ?? 0) + const level = total === 0 ? 0 : Math.max(1, Math.ceil((total / max) * 4)) + grid.append(h('button', { + type: 'button', + class: 'zc-heatcell' + (state.insightsDay === day.key ? ' is-selected' : ''), + dataset: { level }, + title: day.key + ' · ' + formatTokens(total) + (day.value?.cost != null ? ' · ' + costText(day.value.cost) : ''), + onclick: () => { state.insightsDay = state.insightsDay === day.key ? null : day.key; render() }, + })) + } + return h('div', { class: 'zc-heat-wrap' }, grid, state.insightsDay ? h('button', { type: 'button', class: 'zc-linkbtn', onclick: () => { state.insightsDay = null; render() } }, state.t('browser.clear')) : null) +} + +function renderTokenMix(insights) { + const kpi = insights.kpi + const uncached = Math.max(0, (kpi.input ?? 0) - (kpi.cacheRead ?? 0)) + const parts = [ + { key: 'uncached', label: state.t('trend.prompt'), value: uncached, color: CAT_COLOR.user }, + { key: 'cacheRead', label: state.t('trend.cacheRead'), value: kpi.cacheRead ?? 0, color: CAT_COLOR.inject }, + { key: 'output', label: state.t('trend.output'), value: kpi.output ?? 0, color: CAT_COLOR.output }, + ].filter((part) => part.value > 0) + if (!parts.length) return h('div', { class: 'zc-empty' }, state.t('tokens.empty')) + return h('div', { class: 'zc-donut-row' }, renderDonut(parts, { size: 100, centerTop: formatTokens(kpi.billed), centerSub: state.t('insights.billed') }), renderSliceList(parts, kpi.billed)) +} + +function renderCompositionDonut(composition) { + const parts = CATS.filter((cat) => (composition?.[cat] ?? 0) > 0).map((cat) => ({ key: cat, label: catLabel(cat), value: composition[cat], color: CAT_COLOR[cat] })) + const total = parts.reduce((sum, part) => sum + part.value, 0) + return h('div', { class: 'zc-donut-row' }, renderDonut(parts, { size: 100, centerTop: formatTokens(total), centerSub: state.t('current.title') }), renderSliceList(parts, total)) +} + +function renderSessionCard(cardData) { + return h( + 'button', + { type: 'button', class: 'zc-session-card', onclick: () => { state.detail = { kind: 'session', data: cardData }; render() }, title: cardData.title }, + h('span', { class: 'zc-session-top' }, + h('span', { class: 'zc-session-name' }, cardData.title || cardData.id), + h('span', { class: 'zc-session-time' }, relativeTime(cardData.updatedAt)), + ), + h('span', { class: 'zc-session-dir' }, cardData.directory || state.t('common.none')), + h('span', { class: 'zc-session-metrics' }, + h('b', null, formatTokens(cardData.usage?.billed ?? 0)), + h('span', { class: 'zc-muted' }, costText(cardData.usage?.cost)), + h('span', { class: 'zc-muted' }, cardData.cacheHitRate != null ? state.t('stats.cacheHit') + ' ' + pct(cardData.cacheHitRate) : ''), + cardData.contextPct != null ? h('span', { class: 'zc-context-chip' }, pct(cardData.contextPct)) : null, + ), + cardData.contextPct != null + ? h('span', { class: 'zc-session-bar' }, h('span', { style: { width: Math.min(100, cardData.contextPct) + '%' } })) + : null, + cardData.model ? h('span', { class: 'zc-session-model' }, cardData.model) : null, + ) +} + +/* ------------------------------------------------------------------------------------------------ + * Drawers + * ---------------------------------------------------------------------------------------------- */ + +function drawerShell(title, body, { subtitle = null, onBack = null, actions = null } = {}) { + return h( + 'div', + { class: 'zc-overlay', role: 'dialog', 'aria-modal': 'true', onclick: (event) => { if (event.target === event.currentTarget) closeDetail() } }, + h( + 'div', + { class: 'zc-drawer' }, + h( + 'div', + { class: 'zc-drawer-head' }, + h('div', { class: 'zc-drawer-titles' }, + onBack ? iconButton('left', state.t('action.back'), onBack, 'zc-iconbtn-soft') : null, + h('div', null, h('h2', null, title), subtitle ? h('div', { class: 'zc-drawer-sub' }, subtitle) : null), + ), + h('div', { class: 'zc-drawer-actions' }, actions, iconButton('close', state.t('action.close'), closeDetail)), + ), + h('div', { class: 'zc-drawer-body' }, body), + ), + ) +} + +function renderDrawer() { + const detail = state.detail + if (!detail) return null + if (detail.kind === 'element') return renderElementDrawer() + if (detail.kind === 'event') return renderEventDrawer() + if (detail.kind === 'about') return renderAboutDrawer() + if (detail.kind === 'coverage') return renderCoverageDrawer() + if (detail.kind === 'session') return renderSessionDrawer() + return null +} + +function renderElementDrawer() { + const detail = state.detail + const data = detail.data + const title = data?.title || state.t('detail.title') + const actions = data + ? h('div', { class: 'zc-drawer-actionrow' }, + data.call ? button(state.t('action.raw'), { onClick: () => switchElementFormat(detail.format === 'raw' ? 'readable' : 'raw'), class: 'zc-btn-tiny' }) : null, + button(state.t('action.copy'), { onClick: () => copyText(data.content ?? ''), class: 'zc-btn-tiny', icon: 'copy' }), + ) + : null + if (detail.loading) return drawerShell(title, h('div', { class: 'zc-empty' }, state.t('app.tagline')), { actions }) + if (detail.error) return drawerShell(title, h('div', { class: 'zc-inline-error' }, detail.error), { actions }) + const content = data.content ?? '' + const body = h('div', { class: 'zc-element' }) + body.append( + h('div', { class: 'zc-element-meta' }, + data.cat ? h('span', { class: 'zc-chip' }, catLabel(data.cat)) : null, + data.kind ? h('span', { class: 'zc-chip zc-chip-soft' }, state.t('kind.' + data.kind)) : null, + data.tool ? h('span', { class: 'zc-chip' }, data.tool) : null, + data.status ? h('span', { class: 'zc-status-dot', dataset: { status: data.status } }) : null, + data.totalChars != null ? h('span', { class: 'zc-muted' }, state.t('detail.chars', { n: formatCount(data.totalChars) })) : null, + data.lines ? h('span', { class: 'zc-muted' }, state.t('detail.lines', { n: formatCount(data.lines) })) : null, + ), + ) + if (data.attachment) { + body.append( + h('div', { class: 'zc-attachment' }, + h('div', { class: 'zc-attachment-icon' }, '🖼'), + h('div', null, + h('b', null, data.attachment.mime ?? state.t('detail.attachment')), + data.attachment.width && data.attachment.height ? h('span', null, state.t('detail.dimensions', { w: data.attachment.width, h: data.attachment.height })) : null, + data.attachment.bytes ? h('span', null, formatBytes(data.attachment.bytes)) : null, + h('span', { class: 'zc-muted' }, state.t('detail.artifact')), + ), + ), + ) + } + if (data.call) { + body.append( + h('div', { class: 'zc-element-section' }, + h('h3', null, state.t('detail.arguments')), + data.call.fields?.length + ? h('table', { class: 'zc-argtable' }, h('tbody', null, data.call.fields.map((field) => + h('tr', null, h('th', null, field.name), h('td', null, h('pre', { class: 'zc-argvalue' }, field.value + (field.truncated ? '…' : '')))), + ))) + : h('div', { class: 'zc-note' }, state.t('detail.noArgs')), + ), + ) + } + body.append( + h('div', { class: 'zc-element-section' }, + h('div', { class: 'zc-element-sectionhead' }, + h('h3', null, data.call ? state.t('detail.result') : data.title || state.t('detail.title')), + h('label', { class: 'zc-search zc-search-small' }, icon('search', 13), h('input', { + type: 'search', placeholder: state.t('detail.find'), value: detail.find ?? '', + oninput: (event) => { state.detail = { ...detail, find: event.target.value }; render() }, + })), + ), + data.find && content + ? h('div', { class: 'zc-note' }, findCountText(content, data.find)) + : null, + content + ? detail.format === 'readable' && (data.markdown || data.kind === 'text' || data.kind === 'answer') + ? h('div', { class: 'zc-markdown' }, renderMarkdown(content, detail.find)) + : h('pre', { class: 'zc-pre' }, renderHighlighted(content, detail.find)) + : h('div', { class: 'zc-note' }, data.call ? state.t('detail.noResult') : state.t('detail.noArgs')), + data.truncated + ? h('div', { class: 'zc-loadmore' }, + h('span', null, state.t('detail.truncated', { shown: formatCount(content.length), total: formatCount(data.totalChars) })), + button(state.t('detail.loadMore'), { onClick: loadMoreElement, class: 'zc-btn-tiny', icon: 'down' }), + ) + : null, + h('div', { class: 'zc-note' }, state.t('detail.safe')), + ), + ) + return drawerShell(title, body, { + subtitle: data.totalChars != null ? state.t('detail.chars', { n: formatCount(data.totalChars) }) : null, + actions, + }) +} + +function renderEventDrawer() { + const detail = state.detail + const event = detail.event + const data = detail.data + const info = data?.event ?? event + const title = state.t('events.compactionDetail') + const actions = h('div', { class: 'zc-drawer-actionrow' }, + event.step ? button(state.t('events.openStep'), { onClick: () => { closeDetail(); selectStep(event.step, { pin: false }) }, class: 'zc-btn-tiny', icon: 'arrow' }) : null, + event.step ? button(state.t('events.beforeAfter'), { + onClick: () => { + state.baselineMode = 'step' + state.browserMode = 'changes' + closeDetail() + selectStep(event.step, { pin: false }) + }, + class: 'zc-btn-tiny', + }) : null, + ) + if (detail.loading) return drawerShell(title, h('div', { class: 'zc-empty' }, state.t('app.tagline')), { actions }) + if (detail.error) return drawerShell(title, h('div', { class: 'zc-inline-error' }, detail.error), { actions }) + const body = h('div', { class: 'zc-event-detail' }) + body.append( + h('div', { class: 'zc-event-summary' }, + h('div', { class: 'zc-event-stat' }, h('b', null, formatTokens(event.preTokens)), h('span', null, state.t('events.before'))), + h('div', { class: 'zc-event-stat' }, h('b', null, formatTokens(event.postTokens)), h('span', null, state.t('events.after'))), + h('div', { class: 'zc-event-stat' }, h('b', null, event.summarizedCount ?? '—'), h('span', null, state.t('events.messages'))), + h('div', { class: 'zc-event-stat' }, h('b', null, formatDuration(event.durationMs)), h('span', null, state.t('events.duration'))), + ), + h('div', { class: 'zc-note' }, [info.trigger ? state.t('events.trigger.' + (info.trigger === 'auto' ? 'auto' : 'manual')) : null, info.reason, info.phase].filter(Boolean).join(' · ')), + ) + if (!data?.messages?.length) { + body.append(h('div', { class: 'zc-empty' }, state.t('events.summarizedEmpty'))) + } else { + body.append(h('div', { class: 'zc-event-messages' }, data.messages.map((message) => renderSummarizedMessage(message)))) + if (data.nextOffset != null) { + body.append(h('div', { class: 'zc-loadmore' }, + h('span', null, state.t('events.messages') + ' ' + data.offset + ' / ' + data.total), + button(state.t('detail.loadMore'), { onClick: loadMoreEvent, class: 'zc-btn-tiny', icon: 'down' }), + )) + } + } + return drawerShell(title, body, { subtitle: clockTime(event.time), actions }) +} + +function renderSummarizedMessage(message) { + const row = h('div', { class: 'zc-summary-message' }) + row.append( + h('div', { class: 'zc-summary-head' }, + h('span', { class: 'zc-chip' }, message.role), + message.kind ? h('span', { class: 'zc-chip zc-chip-soft' }, message.kind) : null, + h('span', { class: 'zc-muted' }, '#' + message.sequence), + h('span', { class: 'zc-muted' }, clockTime(message.time)), + ), + ) + for (const part of message.parts ?? []) { + const text = part.text || part.outputPreview || part.inputSample || part.summary || '' + row.append( + h('button', { + type: 'button', + class: 'zc-summary-part', + onclick: () => openElement(part.id ? 'p:' + part.id + (part.type === 'tool' ? ':result' : '') : null, state.step), + disabled: !part.id, + title: text, + }, + h('span', { class: 'zc-chip zc-chip-soft' }, part.type + (part.tool ? ' · ' + part.tool : '')), + h('span', { class: 'zc-summary-text' }, text || '—'), + ), + ) + } + if (message.summary) row.append(h('pre', { class: 'zc-pre zc-pre-small' }, message.summary)) + return row +} + +function renderAboutDrawer() { + const snapshot = state.snapshot + const body = h('div', { class: 'zc-about' }) + body.append( + h('p', null, state.t('about.body')), + h('div', { class: 'zc-about-grid' }, + h('span', null, state.t('about.author')), h('b', null, 'bowenliang123'), + h('span', null, state.t('about.license')), h('b', null, 'Apache-2.0'), + h('span', null, state.t('about.storage')), h('code', null, state.t('about.storageValue')), + h('span', null, state.t('about.workspace')), h('code', null, snapshot?.session?.directory ?? state.t('common.none')), + h('span', null, state.t('settings.version')), h('b', null, VERSION), + ), + h('div', { class: 'zc-note' }, state.t('about.credits')), + h('div', { class: 'zc-note' }, state.t('about.privacy')), + ) + return drawerShell(state.t('about.title'), body) +} + +function renderCoverageDrawer() { + const coverage = state.snapshot.coverage + const body = h('div', { class: 'zc-about' }, + h('div', { class: 'zc-about-grid' }, + h('span', null, state.t('coverage.messages')), h('b', null, state.t('common.yes')), + h('span', null, state.t('coverage.rollout', { value: state.t('coverage.rollout.' + (coverage.rollout ?? 'none')) })), + h('b', null, coverage.headerExact + ' exact / ' + coverage.headerEstimated + ' approximated / ' + coverage.headerMissing + ' missing'), + h('span', null, state.t('coverage.retention', { value: coverage.fullRetention == null ? state.t('coverage.unknown') : coverage.fullRetention ? state.t('coverage.on') : state.t('coverage.off') })), + h('b', null, 'modelIoFullRetentionEnabled'), + ), + h('div', { class: 'zc-note' }, state.t('coverage.learn')), + ) + return drawerShell(state.t('coverage.details'), body) +} + +function renderSessionDrawer() { + const cardData = state.detail?.data + if (!cardData) return null + const body = h('div', { class: 'zc-about' }, + h('div', { class: 'zc-about-grid' }, + h('span', null, 'ID'), h('code', null, cardData.id), + h('span', null, state.t('fleet.cost')), h('b', null, costText(cardData.usage?.cost ?? cardData.cost)), + h('span', null, state.t('insights.billed')), h('b', null, formatTokens(cardData.usage?.billed ?? cardData.billed)), + h('span', null, state.t('fleet.context')), h('b', null, pct(cardData.contextPct)), + h('span', null, state.t('settings.dataRoot')), h('code', null, cardData.directory ?? ''), + ), + h('div', { class: 'zc-note' }, state.t('insights.openNote')), + ) + return drawerShell(cardData.title || cardData.id, body, { subtitle: state.t('insights.card.updated', { time: relativeTime(cardData.updatedAt) }) }) +} + +function renderMember() { + const member = state.member + if (!member) return null + if (member.loading) return drawerShell(state.t('fleet.open'), h('div', { class: 'zc-empty' }, state.t('app.tagline')), { onBack: () => { state.member = null; render() } }) + if (member.error) return drawerShell(state.t('fleet.open'), h('div', { class: 'zc-inline-error' }, member.error), { onBack: () => { state.member = null; render() } }) + const data = member.data + const body = h('div', { class: 'zc-member' }) + body.append( + h('div', { class: 'zc-element-meta' }, + h('span', { class: 'zc-chip' }, data.session.taskType ?? state.t('fleet.child')), + data.latest?.model ? h('span', { class: 'zc-chip zc-chip-soft' }, data.latest.model) : null, + data.latest?.status ? h('span', { class: 'zc-status-dot', dataset: { status: data.latest.status } }) : null, + ), + h('div', { class: 'zc-about-grid' }, + h('span', null, state.t('fleet.billed')), h('b', null, formatTokens(data.usage?.billed ?? 0)), + h('span', null, state.t('fleet.cost')), h('b', null, costText(data.usage?.cost)), + h('span', null, state.t('fleet.context')), h('b', null, pct(data.latest?.contextPct)), + h('span', null, state.t('fleet.calls', { n: data.usage?.calls ?? 0 })), h('b', null, formatDuration(data.latest?.durationMs)), + h('span', null, state.t('settings.dataRoot')), h('code', null, data.session.directory ?? ''), + ), + data.preview?.initialPrompt + ? h('div', { class: 'zc-element-section' }, h('h3', null, state.t('fleet.prompt')), h('pre', { class: 'zc-pre zc-pre-small' }, data.preview.initialPrompt)) + : null, + data.preview?.lastReply?.text + ? h('div', { class: 'zc-element-section' }, h('h3', null, state.t('fleet.lastReply')), h('pre', { class: 'zc-pre zc-pre-small' }, data.preview.lastReply.text)) + : null, + data.children?.length + ? h('div', { class: 'zc-element-section' }, h('h3', null, state.t('fleet.children')), data.children.map((child) => h('div', { class: 'zc-note' }, child.title))) + : null, + h('div', { class: 'zc-note' }, state.t('fleet.noSwitch')), + ) + return drawerShell(data.session.title || data.session.id, body, { subtitle: state.t('fleet.open'), onBack: () => { state.member = null; render() } }) +} + +/* ------------------------------------------------------------------------------------------------ + * Settings + * ---------------------------------------------------------------------------------------------- */ + +function renderSettings() { + const draft = state.settingsDraft ?? { ...state.prefs } + const current = () => state.settingsDraft ?? draft + const field = (label, control) => h('label', { class: 'zc-settings-row' }, h('span', { class: 'zc-settings-label' }, label), control) + const select = (key, values) => h('select', { + class: 'zc-select', + onchange: (event) => { state.settingsDraft = { ...current(), [key]: event.target.value } }, + }, values.map(([value, label]) => h('option', { value, selected: current()[key] === value }, label))) + const number = (key) => h('input', { + class: 'zc-input', + type: 'number', + min: 0, + step: 1000, + value: current()[key] ?? 0, + oninput: (event) => { state.settingsDraft = { ...current(), [key]: Number(event.target.value) || 0 } }, + }) + const checkbox = (key) => h('input', { + type: 'checkbox', + checked: current()[key] === true, + onchange: (event) => { state.settingsDraft = { ...current(), [key]: event.target.checked } }, + }) + const body = h( + 'div', + { class: 'zc-settings' }, + field(state.t('settings.defaultView'), h('select', { class: 'zc-select', onchange: (event) => { state.settingsDraft = { ...current(), defaultView: event.target.value } } }, + [['context', state.t('tab.context')], ['fleet', state.t('tab.fleet')], ['insights', state.t('tab.insights')]].map(([value, label]) => + h('option', { value, selected: draft.defaultView === value }, label), + ), + )), + field(state.t('settings.granularity'), select('granularity', [['step', state.t('settings.step')], ['turn', state.t('settings.turn')]])), + field(state.t('settings.trendMode'), select('trendMode', [['total', state.t('settings.total')], ['delta', state.t('settings.delta')]])), + field(state.t('settings.deltaBase'), select('deltaBase', [['step', state.t('settings.step')], ['turn', state.t('settings.turn')]])), + field(state.t('settings.durationCurve'), checkbox('durationCurve')), + field(state.t('settings.fileSort'), select('fileSort', [['count', state.t('settings.count')], ['latest', state.t('settings.latest')], ['path', state.t('settings.path')], ['name', state.t('settings.name')], ['added', state.t('settings.added')]])), + field(state.t('settings.toolSort'), select('toolSort', [['size', state.t('settings.size')], ['count', state.t('settings.count')], ['name', state.t('settings.name')]])), + field(state.t('settings.currency'), select('currency', [['auto', state.t('settings.auto')], ['usd', state.t('settings.usd')], ['cny', state.t('settings.cny')]])), + field(state.t('settings.language'), select('language', [['auto', state.t('settings.auto')], ['en', state.t('settings.en')], ['zh', state.t('settings.zh')]])), + field(state.t('settings.contextWindow'), h('div', null, number('contextWindow'), h('small', { class: 'zc-hint' }, state.t('settings.contextWindowHint')))), + field(state.t('settings.compactCards'), checkbox('compactCards')), + h('div', { class: 'zc-settings-actions' }, + button(state.t('action.save'), { onClick: saveSettings, class: 'zc-btn-primary', icon: 'check' }), + button(state.t('action.reset'), { onClick: () => { state.settingsDraft = { ...defaultPrefs() }; render() }, class: 'zc-btn-tiny' }), + ), + h('div', { class: 'zc-note' }, state.t('settings.openSettingsHint')), + h('div', { class: 'zc-note' }, state.t('coverage.learn')), + ) + return drawerShell(state.t('settings.title'), body, { onBack: () => { state.settingsOpen = false; render() } }) +} + +function defaultPrefs() { + return { + defaultView: 'context', + granularity: 'step', + trendMode: 'total', + deltaBase: 'step', + durationCurve: true, + fileSort: 'count', + toolSort: 'size', + currency: 'auto', + language: 'auto', + contextWindow: 0, + compactCards: false, + } +} + +async function saveSettings() { + try { + const prefs = await call('set_context_preferences', { patch: state.settingsDraft ?? {} }) + state.prefs = prefs + state.settingsOpen = false + applyPreferences(prefs) + showToast(state.t('settings.saved')) + await refresh({ silent: true }) + } catch (error) { + showToast(error?.message ?? state.t('settings.saveFailed')) + } +} + +/* ------------------------------------------------------------------------------------------------ + * Markdown / find helpers + * ---------------------------------------------------------------------------------------------- */ + +function inlineNodes(text) { + const frag = document.createDocumentFragment() + const pattern = /(\*\*[^*]+\*\*|`[^`]+`)/g + let last = 0 + for (const match of text.matchAll(pattern)) { + if (match.index > last) frag.append(document.createTextNode(text.slice(last, match.index))) + const token = match[0] + if (token.startsWith('**')) frag.append(h('strong', null, token.slice(2, -2))) + else frag.append(h('code', null, token.slice(1, -1))) + last = match.index + token.length + } + if (last < text.length) frag.append(document.createTextNode(text.slice(last))) + return frag +} + +function renderMarkdown(text, find = '') { + const wrap = document.createDocumentFragment() + const lines = String(text ?? '').split('\n') + let code = null + let list = null + const flushList = () => { + if (list) { + wrap.append(list) + list = null + } + } + for (const line of lines) { + if (code !== null) { + if (line.trim().startsWith('```')) { + wrap.append(h('pre', { class: 'zc-code' }, code.join('\n'))) + code = null + } else code.push(line) + continue + } + if (line.trim().startsWith('```')) { + flushList() + code = [] + continue + } + const heading = line.match(/^(#{1,4})\s+(.*)$/) + if (heading) { + flushList() + wrap.append(h('h' + Math.min(5, heading[1].length + 2), null, inlineNodes(heading[2]))) + continue + } + const bullet = line.match(/^\s*[-*]\s+(.*)$/) + if (bullet) { + if (!list) list = h('ul') + list.append(h('li', null, inlineNodes(bullet[1]))) + continue + } + const numbered = line.match(/^\s*\d+[.)]\s+(.*)$/) + if (numbered) { + if (!list) list = h('ol') + list.append(h('li', null, inlineNodes(numbered[1]))) + continue + } + flushList() + if (line.trim() === '') continue + wrap.append(h('p', null, inlineNodes(line))) + } + if (code !== null) wrap.append(h('pre', { class: 'zc-code' }, code.join('\n'))) + flushList() + if (find) { + const holder = h('div') + holder.append(wrap) + return h('div', null, renderHighlighted(holder.innerText, find)) + } + return wrap +} + +function escapeRegExp(value) { + return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + +function findCountText(text, find) { + if (!find) return '' + const matches = String(text).toLowerCase().split(String(find).toLowerCase()).length - 1 + return matches > 0 ? state.t('detail.findCount', { n: matches }) : state.t('detail.findNone') +} + +function renderHighlighted(text, find) { + if (!find) return document.createTextNode(String(text ?? '')) + const frag = document.createDocumentFragment() + const pattern = new RegExp(escapeRegExp(find), 'gi') + let last = 0 + for (const match of String(text).matchAll(pattern)) { + if (match.index > last) frag.append(document.createTextNode(String(text).slice(last, match.index))) + frag.append(h('mark', null, match[0])) + last = match.index + match[0].length + } + if (last < String(text).length) frag.append(document.createTextNode(String(text).slice(last))) + return frag +} + +/* ------------------------------------------------------------------------------------------------ + * Keyboard and boot + * ---------------------------------------------------------------------------------------------- */ + +window.addEventListener('keydown', (event) => { + if (event.key === 'Escape') { + if (state.settingsOpen) { + state.settingsOpen = false + render() + } else if (state.detail || state.member) { + state.detail = null + state.member = null + render() + } + return + } + if (event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement || event.target instanceof HTMLTextAreaElement) return + if (state.tab !== 'context') return + if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') { + const step = selectedStep() + if (!step) return + event.preventDefault() + selectStep(event.key === 'ArrowLeft' ? Math.max(1, step - 1) : Math.min(state.snapshot.requestsTotal ?? step, step + 1)) + } +}) + +window.addEventListener('visibilitychange', () => { + if (!document.hidden) refresh({ silent: true }) + schedulePoll() +}) + +function renderToast(text) { + return h('div', { class: 'zc-toast' }, text) +} + +async function boot() { + applyHost() + if (PREVIEW) { + state.lang = String(PREVIEW.locale ?? navigator.language ?? 'en').toLowerCase().startsWith('zh') ? 'zh' : 'en' + state.t = makeT(state.lang) + transport = true + await refresh() + return + } + try { + app = new App( + { name: 'zcode-context-insight', version: VERSION }, + { availableDisplayModes: ['inline', 'fullscreen'] }, + ) + app.onhostcontextchanged = () => { + // Host context change notifications carry only the changed fields; the SDK has already + // merged them into its own snapshot, so re-read that instead of replacing ours. + hostContext = app.getHostContext?.() ?? hostContext + applyHost() + render() + } + await app.connect() + hostContext = app.getHostContext?.() ?? null + applyHost() + transport = true + await refresh() + } catch (error) { + state.loading = false + state.error = new UiError('offline', state.t('error.offline') + ' ' + (error?.message ?? '')) + render() + } +} + +function fatal(error) { + console.error('[zcode-context-insight] fatal', error) + state.loading = false + state.error = new UiError('client_error', String(error?.stack ?? error?.message ?? error)) + try { + render() + } catch (renderError) { + root.textContent = 'Context panel failed to render: ' + String(renderError?.message ?? renderError) + } +} + +boot().catch(fatal) diff --git a/ui-plugins/zcode-context-insight/ui/i18n.mjs b/ui-plugins/zcode-context-insight/ui/i18n.mjs new file mode 100644 index 0000000..217e78a --- /dev/null +++ b/ui-plugins/zcode-context-insight/ui/i18n.mjs @@ -0,0 +1,993 @@ +const EN = { + 'app.title': 'Context', + 'app.tagline': 'What the model is carrying', + 'app.footer': 'Read-only local data · offline · estimates anchored to provider usage', + 'app.version': 'v{version}', + 'app.readonly': 'Read-only', + 'app.offline': 'Offline', + + 'tab.context': 'Context', + 'tab.fleet': 'Fleet', + 'tab.insights': 'Insights', + + 'action.refresh': 'Refresh', + 'action.settings': 'Preferences', + 'action.about': 'About', + 'action.close': 'Close', + 'action.back': 'Back', + 'action.retry': 'Retry', + 'action.copy': 'Copy', + 'action.copied': 'Copied', + 'action.loadMore': 'Load more', + 'action.loadEarlier': 'Load earlier requests', + 'action.showAll': 'Show all', + 'action.showLess': 'Show less', + 'action.expand': 'Expand', + 'action.collapse': 'Collapse', + 'action.locate': 'Locate in browser', + 'action.compare': 'Compare', + 'action.open': 'Open', + 'action.save': 'Save', + 'action.reset': 'Reset', + 'action.find': 'Find', + 'action.raw': 'Raw', + 'action.markdown': 'Markdown', + 'action.copyPath': 'Copy path', + 'action.details': 'Details', + 'action.more': 'More', + + 'steps.following': 'Following the latest request', + 'steps.pinned': 'Pinned to request #{step}', + 'steps.newer': '{n} newer', + 'steps.latest': 'Latest', + 'steps.jumpLatest': 'Jump to latest', + 'steps.prev': 'Previous request', + 'steps.next': 'Next request', + 'steps.pick': 'Choose a request', + 'steps.live': 'Live', + 'steps.step': 'Step {n}', + 'steps.turn': 'Turn {n}', + 'steps.turnStep': 'T{n} · S{n2}', + 'steps.steps': '{n} steps', + 'steps.empty': 'No recorded agent requests yet.', + 'steps.unrecorded': 'Earlier steps are outside the loaded window.', + + 'stats.title': 'Context Stats', + 'stats.turns': 'Turns', + 'stats.steps': 'Steps', + 'stats.inputs': 'Human inputs', + 'stats.answers': 'Replies', + 'stats.toolCalls': 'Tool calls', + 'stats.images': 'Images', + 'stats.skills': 'Skills', + 'stats.cost': 'Estimated cost', + 'stats.family': 'Agent network', + 'stats.familyValue': '{n} agents · {tokens}', + 'stats.familyTip': 'Billed tokens and estimated cost of every subagent in this family', + 'stats.cacheHit': 'cache hit', + 'stats.inputsTip': 'Open the browser at your messages', + 'stats.filesTip': 'Open File Activity with this kind', + 'stats.session': 'Session', + 'stats.details': 'Stats', + 'stats.billed': 'Billed tokens', + 'stats.flow': 'What feeds the window', + 'stats.events': 'Events', + 'stats.tools': 'Tools', + 'stats.read': 'Read', + 'stats.written': 'Written', + 'stats.searched': 'Searched', + 'stats.imagesShort': 'Images', + 'stats.injections': 'Injections', + 'stats.compactions': 'Compactions', + 'stats.unpriced': '{n} calls without a known price', + 'stats.moreTools': '+{n}', + 'stats.jump': 'Jump', + + 'tokens.title': 'Token Stats', + 'tokens.total': 'billed tokens', + 'tokens.output': 'output · exact', + 'tokens.empty': 'No provider usage has been reported yet.', + 'tokens.cacheTip': 'Cache-read tokens ÷ billed prompt tokens', + 'tokens.costTip': 'Estimated from the bundled models.dev snapshot at list price; provider billing may differ.', + + 'timing.title': 'Timing Stats', + 'timing.total': 'active time', + 'timing.ttft': 'Waiting for first token', + 'timing.gen': 'Model generation', + 'timing.reasoning': 'Thinking', + 'timing.text': 'Answer text', + 'timing.toolArgs': 'Tool arguments', + 'timing.tools': 'Tool runs', + 'timing.other': 'Overhead', + 'timing.calls': '{n} calls', + 'timing.toolTimes': '{n} runs', + 'timing.tps': '{n} tok/s', + 'timing.empty': 'No completed model calls yet.', + 'timing.stripTip': 'Session-time strip: TTFT, generation, tool runs and gaps in order', + + 'current.title': 'Current Context', + 'current.subtitle': 'Request #{step} · turn {turn}', + 'current.estimate': '≈ estimated prompt tokens', + 'current.used': 'used', + 'current.windowUnknown': 'window unknown', + 'current.reserve': 'Output reserve', + 'current.headroom': 'Compaction headroom', + 'current.lastUser': 'Latest request', + 'current.liveTip': 'Provider-reported prompt size of this request', + 'current.headerEstimated': 'Header approximated from the nearest recorded request', + + 'cat.system': 'System prompt', + 'cat.tools': 'Tool schemas', + 'cat.user': 'User messages', + 'cat.inject': 'Injected context', + 'cat.skill': 'Skill injections', + 'cat.assistant': 'Assistant replies', + 'cat.tool': 'Tool results', + 'cat.unknown': 'Unrecorded', + + 'kind.answer': 'Answer', + 'kind.thinking': 'Thinking', + 'kind.tool-call': 'Tool call', + 'kind.tool-result': 'Tool result', + 'kind.schema': 'Schema', + 'kind.system': 'System', + 'kind.prompt': 'Prompt', + 'kind.injection': 'Injection', + 'kind.compaction': 'Summary', + 'kind.skill': 'Skill', + 'kind.image': 'Image', + 'kind.attachment': 'Attachment', + + 'form.context': 'Context', + 'form.reminder': 'Reminder', + 'form.todo': 'Todo reminder', + 'form.agents': 'Agent list', + 'form.compaction': 'Compaction summary', + 'form.skill': 'Skill', + 'form.background': 'Background task', + + 'trend.title': 'Context Trend', + 'trend.steps': 'Steps', + 'trend.turns': 'Turns', + 'trend.total': 'Total', + 'trend.delta': 'Delta', + 'trend.overview': 'Overview', + 'trend.dna': 'DNA', + 'trend.adaptive': 'Adaptive', + 'trend.duration': 'Duration', + 'trend.empty': 'No requests to chart yet.', + 'trend.scrollTip': 'Drag or scroll sideways through the session', + 'trend.hoverTip': 'Hover for a request; click to pin it', + 'trend.actual': 'provider actual', + 'trend.prompt': 'Prompt', + 'trend.output': 'Output', + 'trend.cacheRead': 'Cache read', + 'trend.deltaNet': 'Net change', + 'trend.compaction': 'Compaction', + 'trend.injection': 'Injection', + 'trend.model': 'Model switch', + 'trend.rewind': 'Rewind', + 'trend.turnStrip': 'Turn {n}', + 'trend.brief': 'This step', + 'trend.earlier': 'Earlier requests are not in this page.', + 'trend.overviewTip': 'The whole loaded session as one ribbon', + 'trend.dnaTip': 'One band per context item in prompt order', + 'trend.adaptiveTip': 'Scale bars to the visible maximum', + 'trend.durationTip': 'Overlay each request’s duration', + + 'brief.user': 'User', + 'brief.in': 'In', + 'brief.response': 'Response', + 'brief.inCount': '{n} new item(s)', + 'brief.noResponse': 'No reply recorded yet', + 'brief.tools': '{n} tool call(s)', + 'brief.empty': 'No brief recorded for this request.', + 'brief.jump': 'Open in browser', + + 'browser.title': 'Context Browser', + 'browser.subtitle': 'Request #{step} · {count} items · {tokens}', + 'browser.estimated': 'Estimated', + 'browser.actual': 'Actual', + 'browser.search': 'Filter this request…', + 'browser.sort': 'Sort', + 'browser.sort.size': 'Size', + 'browser.sort.name': 'Name', + 'browser.sort.order': 'Prompt order', + 'browser.sort.calls': 'Calls', + 'browser.calls': '{n} calls', + 'browser.mode': 'View', + 'browser.mode.categories': 'Categories', + 'browser.mode.changes': 'Changes', + 'browser.mode.dna': 'DNA', + 'browser.baseline': 'Compare', + 'browser.baseline.off': 'Off', + 'browser.baseline.step': 'Previous step', + 'browser.baseline.turn': 'Previous turn', + 'browser.changes.added': 'Added', + 'browser.changes.removed': 'Removed', + 'browser.changes.changed': 'Changed', + 'browser.changes.empty': 'Nothing added or removed versus the baseline.', + 'browser.changes.unavailable': 'No comparable baseline for this request.', + 'browser.changes.note': 'Changes are observed differences between recorded snapshots, not proof of a cause.', + 'browser.kindChips': 'Reply kind', + 'browser.kind.thinking': 'Thinking', + 'browser.kind.tools': 'Tools', + 'browser.kind.answer': 'Answer', + 'browser.toolSource': 'Provided by {source}', + 'browser.enter': 'Entered at step {step}', + 'browser.enterLive': 'Entered in this request', + 'browser.more': '{n} more item(s)', + 'browser.dnaTip': 'Flattened prompt order; newest first from the top of the list', + 'browser.dnaPos': '#{n}', + 'browser.empty': 'This request has no recorded elements.', + 'browser.headerMissing': 'The system prompt and tool schemas were not recorded for this earlier request.', + 'browser.headerEstimated': 'Header from the nearest recorded request; earlier header versions were not retained.', + 'browser.loadFailed': 'This request could not be loaded.', + 'browser.searchEmpty': 'No items match this filter.', + 'browser.filters': 'Filter', + 'browser.clear': 'Clear', + + 'events.title': 'Context Events', + 'events.inject': 'Inject', + 'events.compaction': 'Compact', + 'events.prune': 'Prune', + 'events.model': 'Switch', + 'events.mode': 'Mode', + 'events.rewind': 'Rewind', + 'events.mcp': 'MCP', + 'events.all': 'All', + 'events.empty': 'No context events recorded in this session.', + 'events.noneMatch': 'No events match these filters.', + 'events.showAll': 'Show all {n}', + 'events.injectDetail': 'Runtime-injected context', + 'events.compactionDetail': 'Compaction', + 'events.modelDetail': 'Model switched', + 'events.modeDetail': 'Execution mode changed', + 'events.rewindDetail': 'Conversation rewound', + 'events.mcpDetail': 'MCP tools registered', + 'events.trigger.auto': 'Automatic', + 'events.trigger.manual': 'Manual', + 'events.status.completed': 'completed', + 'events.status.failed': 'failed', + 'events.status.started': 'started', + 'events.status.retrying': 'retrying', + 'events.status.interrupted': 'interrupted', + 'events.status.skipped': 'skipped', + 'events.status.unknown': 'unknown', + 'events.summarized': '{n} messages summarized · {kept} kept', + 'events.tokensSaved': '{n} tokens reclaimed', + 'events.atStep': 'Step {step}', + 'events.whatSummarized': 'What was summarized', + 'events.summarizedEmpty': 'The summarized messages are not available (rewound branch or missing rows).', + 'events.showSummarized': 'Show summarized messages', + 'events.openStep': 'Open the request after this event', + 'events.openItem': 'Open the injected item', + 'events.beforeAfter': 'Compare before and after', + 'events.before': 'before', + 'events.after': 'after', + 'events.messages': 'messages', + 'events.duration': 'duration', + + 'files.title': 'File Activity', + 'files.subtitle': 'What this agent did to your files up to request #{step}', + 'files.read': 'Read', + 'files.written': 'Written', + 'files.searched': 'Searched', + 'files.images': 'Images', + 'files.all': 'All', + 'files.search': 'Filter paths…', + 'files.sort': 'Sort', + 'files.sort.count': 'Ops', + 'files.sort.latest': 'Latest', + 'files.sort.path': 'Path', + 'files.sort.name': 'Name', + 'files.sort.added': 'Added lines', + 'files.ops': '{n} ops', + 'files.added': '+{n}', + 'files.removed': '−{n}', + 'files.empty': 'No file operations recorded yet.', + 'files.noneMatch': 'No files match this filter.', + 'files.opsTitle': 'Operations', + 'files.opRead': 'Read', + 'files.opWrite': 'Write', + 'files.opSearch': 'Search', + 'files.shellEstimate': 'Shell-derived estimate', + 'files.truncated': 'Showing the first {n} files.', + 'files.openPath': 'Open this file in the browser', + 'files.copyPath': 'Copy file path', + 'files.pattern': 'Search pattern', + + 'coverage.title': 'Data coverage', + 'coverage.good': 'Complete headers and complete message history are available for every request.', + 'coverage.retentionOff': 'Complete Model I/O retention is off. Message composition is reconstructed from the complete session store; older system prompts and tool schemas may be approximated.', + 'coverage.rolloutMissing': 'No model-I/O records were found for this session; system prompt and tool schemas are unavailable.', + 'coverage.headerEstimated': 'The header is estimated for {n} request(s) from the nearest recorded request.', + 'coverage.headerMissing': 'The header is missing for {n} request(s); their prompt total includes an unrecorded remainder.', + 'coverage.messages': 'Messages: complete session store', + 'coverage.headerExact': '{n} exact header(s)', + 'coverage.headerApprox': '{n} approximated header(s)', + 'coverage.rollout': 'Model I/O: {value}', + 'coverage.rollout.full': 'full', + 'coverage.rollout.partial': 'partial/tail', + 'coverage.rollout.none': 'none', + 'coverage.retention': 'Complete retention: {value}', + 'coverage.on': 'on', + 'coverage.off': 'off', + 'coverage.unknown': 'unknown', + 'coverage.learn': 'Enable “Keep complete model I/O” in ZCode Settings → General for exact older headers. Existing records cannot be recovered.', + 'coverage.details': 'Coverage details', + + 'fleet.title': 'Agent Fleet', + 'fleet.subtitle': 'The current agent, its parents and every subagent in this family', + 'fleet.agents': 'Agents', + 'fleet.running': 'Running', + 'fleet.billed': 'Family billed', + 'fleet.cost': 'Estimated cost', + 'fleet.empty': 'No agent sessions found for this family.', + 'fleet.self': 'Current', + 'fleet.ancestor': 'Parent', + 'fleet.child': 'Subagent', + 'fleet.sibling': 'Sibling', + 'fleet.status.running': 'running', + 'fleet.status.completed': 'completed', + 'fleet.status.error': 'error', + 'fleet.status.cancelled': 'cancelled', + 'fleet.status.idle': 'idle', + 'fleet.context': 'Context', + 'fleet.calls': '{n} calls', + 'fleet.steps': '{n} steps', + 'fleet.open': 'Agent details', + 'fleet.noSwitch': 'The panel host does not expose session switching; use the session list to open this agent.', + 'fleet.prompt': 'Initial prompt', + 'fleet.lastReply': 'Latest reply', + 'fleet.children': 'Direct subagents', + 'fleet.you': 'This session', + 'fleet.truncated': 'The family was capped at {n} agents.', + 'fleet.legend': 'Lineage color follows the parent; a pulsing dot marks a running agent.', + + 'insights.title': 'Context Insights', + 'insights.subtitle': 'Every recent session at a glance', + 'insights.range.7d': '7 days', + 'insights.range.30d': '30 days', + 'insights.range.all': 'All', + 'insights.sessions': 'Sessions', + 'insights.billed': 'Billed tokens', + 'insights.cost': 'Estimated cost', + 'insights.cacheHit': 'Cache hit', + 'insights.calls': 'Model calls', + 'insights.context': 'Latest context', + 'insights.usage7': 'Daily billed tokens', + 'insights.usage7Tip': 'Last 7 days of provider-reported billed tokens', + 'insights.heatmap': 'Activity heatmap', + 'insights.heatmapTip': 'The last 8 weeks of daily billed tokens; click a day to filter sessions', + 'insights.tokenMix': 'Token mix', + 'insights.composition': 'Aggregate composition', + 'insights.compositionNote': 'Across the {n} most recent sessions in this range', + 'insights.compositionLoading': 'Computing composition for the most-used sessions…', + 'insights.search': 'Filter sessions…', + 'insights.sort': 'Sort', + 'insights.sort.recent': 'Recent', + 'insights.sort.tokens': 'Tokens', + 'insights.sort.context': 'Context size', + 'insights.group': 'Group', + 'insights.group.none': 'None', + 'insights.group.workspace': 'Workspace', + 'insights.empty': 'No sessions with retained usage in this range.', + 'insights.noneMatch': 'No sessions match this filter.', + 'insights.truncated': 'Showing {shown} of {total} sessions. Narrow the range or search to see more.', + 'insights.card.tokens': '{n} tokens', + 'insights.card.cost': 'cost', + 'insights.card.cache': 'cache', + 'insights.card.context': 'context', + 'insights.card.updated': 'updated {time}', + 'insights.coverage': 'Only sessions whose usage rows are still retained locally appear here.', + 'insights.openNote': 'The panel host does not expose session switching; open this session from the session list.', + + 'detail.title': 'Element', + 'detail.chars': '{n} chars', + 'detail.lines': '{n} lines', + 'detail.truncated': 'Showing {shown} of {total} characters.', + 'detail.loadMore': 'Load more', + 'detail.tool': 'Tool', + 'detail.status': 'Status', + 'detail.arguments': 'Arguments', + 'detail.result': 'Result', + 'detail.noArgs': 'No arguments were recorded.', + 'detail.noResult': 'No result body was recorded.', + 'detail.attachment': 'Attachment', + 'detail.dimensions': '{w}×{h}', + 'detail.bytes': '{size}', + 'detail.artifact': 'Stored artifact', + 'detail.stepStamp': 'Entered at step {step}', + 'detail.find': 'Find in content…', + 'detail.findNone': 'No matches', + 'detail.findCount': '{n} matches', + 'detail.rawMode': 'Raw JSON', + 'detail.safe': 'Content is rendered as text; no external resources are loaded.', + + 'settings.title': 'Preferences', + 'settings.defaultView': 'Default view', + 'settings.granularity': 'Trend granularity', + 'settings.trendMode': 'Trend mode', + 'settings.deltaBase': 'Compare against', + 'settings.durationCurve': 'Duration curve', + 'settings.fileSort': 'File sort', + 'settings.toolSort': 'Tool sort', + 'settings.currency': 'Cost currency', + 'settings.language': 'Language', + 'settings.contextWindow': 'Context-window override', + 'settings.contextWindowHint': 'Used when ZCode’s provider config and the bundled catalog cannot resolve a window. 0 = automatic.', + 'settings.compactCards': 'Compact cards', + 'settings.reset': 'Reset to defaults', + 'settings.saved': 'Preferences saved', + 'settings.saveFailed': 'Could not save preferences', + 'settings.auto': 'Automatic', + 'settings.en': 'English', + 'settings.zh': '简体中文', + 'settings.usd': 'USD ($)', + 'settings.cny': 'CNY (¥)', + 'settings.step': 'Step', + 'settings.turn': 'Turn', + 'settings.total': 'Total', + 'settings.delta': 'Delta', + 'settings.count': 'Ops', + 'settings.latest': 'Latest', + 'settings.path': 'Path', + 'settings.name': 'Name', + 'settings.size': 'Size', + 'settings.added': 'Added lines', + 'settings.data': 'Local data', + 'settings.dataRoot': 'Data root', + 'settings.db': 'Session database', + 'settings.pluginData': 'Preferences directory', + 'settings.retention': 'Complete Model I/O retention', + 'settings.openSettingsHint': 'Change retention in ZCode Settings → General.', + 'settings.version': 'Version', + + 'about.title': 'About zcode-context-insight', + 'about.body': + 'A read-only, offline context insight panel for ZCode. It reads ZCode’s local session store and model-I/O trajectories; it never changes a session, never calls a model and never touches the network.', + 'about.credits': 'Inspired by dsh-context. Built on ZCode’s official MCP Apps UI surface.', + 'about.source': 'Source', + 'about.license': 'License', + 'about.author': 'Author', + 'about.storage': 'Reads', + 'about.storageValue': '~/.zcode/cli/{db,rollout,log}', + 'about.workspace': 'Workspace', + 'about.privacy': 'No telemetry. No outbound requests. Nothing leaves this machine.', + + 'error.title': 'Context is unavailable', + 'error.binding': 'Open this panel from a ZCode session to bind it.', + 'error.database': 'The local ZCode database could not be read.', + 'error.timeout': 'The read took too long. Try again.', + 'error.worker': 'The context data worker stopped. Reopen the panel.', + 'error.generic': 'Something went wrong while reading this session.', + 'error.detail': 'The selected item could not be loaded.', + 'error.event': 'The compaction detail could not be loaded.', + 'error.offline': 'The panel is not connected to the ZCode host.', + + 'time.justNow': 'just now', + 'time.minute': '{n}m ago', + 'time.hour': '{n}h ago', + 'time.day': '{n}d ago', + 'time.date': '{month}/{day}', + + 'tool.built-in': 'built-in', + 'tool.plugin': 'plugin', + 'tool.mcp': 'MCP', + + 'common.none': '—', + 'common.unknown': 'unknown', + 'common.total': 'Total', + 'common.items': '{n} items', + 'common.of': 'of', + 'common.or': 'or', + 'common.and': 'and', + 'common.yes': 'yes', + 'common.no': 'no', +} + +const ZH = { + 'app.title': '上下文', + 'app.tagline': '模型此刻携带了什么', + 'app.footer': '只读本地数据 · 离线 · 估算以 Provider 实际用量为锚', + 'app.version': 'v{version}', + 'app.readonly': '只读', + 'app.offline': '离线', + + 'tab.context': '上下文', + 'tab.fleet': '编队', + 'tab.insights': '洞察', + + 'action.refresh': '刷新', + 'action.settings': '偏好设置', + 'action.about': '关于', + 'action.close': '关闭', + 'action.back': '返回', + 'action.retry': '重试', + 'action.copy': '复制', + 'action.copied': '已复制', + 'action.loadMore': '加载更多', + 'action.loadEarlier': '加载更早的请求', + 'action.showAll': '显示全部', + 'action.showLess': '收起', + 'action.expand': '展开', + 'action.collapse': '收起', + 'action.locate': '在浏览器中定位', + 'action.compare': '对比', + 'action.open': '打开', + 'action.save': '保存', + 'action.reset': '重置', + 'action.find': '查找', + 'action.raw': '原始', + 'action.markdown': 'Markdown', + 'action.copyPath': '复制路径', + 'action.details': '详情', + 'action.more': '更多', + + 'steps.following': '跟随最新请求', + 'steps.pinned': '已固定到请求 #{step}', + 'steps.newer': '{n} 个更新', + 'steps.latest': '最新', + 'steps.jumpLatest': '跳到最新', + 'steps.prev': '上一个请求', + 'steps.next': '下一个请求', + 'steps.pick': '选择请求', + 'steps.live': '实时', + 'steps.step': '步骤 {n}', + 'steps.turn': '回合 {n}', + 'steps.turnStep': 'T{n} · S{n2}', + 'steps.steps': '{n} 步', + 'steps.empty': '还没有记录到 Agent 请求。', + 'steps.unrecorded': '更早的步骤不在当前加载窗口内。', + + 'stats.title': '上下文统计', + 'stats.turns': '回合', + 'stats.steps': '步骤', + 'stats.inputs': '人类输入', + 'stats.answers': '回复', + 'stats.toolCalls': '工具调用', + 'stats.images': '图片', + 'stats.skills': '技能', + 'stats.cost': '预估费用', + 'stats.family': 'Agent 网络', + 'stats.familyValue': '{n} 个 Agent · {tokens}', + 'stats.familyTip': '整个家族(子 Agent)的计费 Token 与预估费用', + 'stats.cacheHit': '缓存命中', + 'stats.inputsTip': '在浏览器中打开你的消息', + 'stats.filesTip': '在文件活动中查看此类操作', + 'stats.session': '会话', + 'stats.details': '统计', + 'stats.billed': '计费 Token', + 'stats.flow': '什么在填充窗口', + 'stats.events': '事件', + 'stats.tools': '工具', + 'stats.read': '读取', + 'stats.written': '写入', + 'stats.searched': '搜索', + 'stats.imagesShort': '图片', + 'stats.injections': '注入', + 'stats.compactions': '压缩', + 'stats.unpriced': '{n} 次调用缺少价格', + 'stats.moreTools': '+{n}', + 'stats.jump': '跳转', + + 'tokens.title': 'Token 统计', + 'tokens.total': '计费 Token', + 'tokens.output': '输出 · 精确', + 'tokens.empty': '还没有 Provider 用量记录。', + 'tokens.cacheTip': '缓存读取 Token ÷ 计费提示 Token', + 'tokens.costTip': '依据内置 models.dev 快照的标价估算,实际账单可能不同。', + + 'timing.title': '耗时统计', + 'timing.total': '活跃时间', + 'timing.ttft': '等待首 Token', + 'timing.gen': '模型生成', + 'timing.reasoning': '思考', + 'timing.text': '回答文本', + 'timing.toolArgs': '工具参数', + 'timing.tools': '工具运行', + 'timing.other': '其他开销', + 'timing.calls': '{n} 次调用', + 'timing.toolTimes': '{n} 次运行', + 'timing.tps': '{n} tok/s', + 'timing.empty': '还没有完成的模型调用。', + 'timing.stripTip': '会话时间条:按顺序展示首 Token、生成、工具运行与间隙', + + 'current.title': '当前上下文', + 'current.subtitle': '请求 #{step} · 回合 {turn}', + 'current.estimate': '≈ 估算提示 Token', + 'current.used': '已使用', + 'current.windowUnknown': '窗口未知', + 'current.reserve': '输出预留', + 'current.headroom': '压缩余量', + 'current.lastUser': '最近请求', + 'current.liveTip': '该请求由 Provider 报告的提示大小', + 'current.headerEstimated': '头部按最近记录到的请求近似', + + 'cat.system': '系统提示', + 'cat.tools': '工具 Schema', + 'cat.user': '用户消息', + 'cat.inject': '注入上下文', + 'cat.skill': '技能注入', + 'cat.assistant': '助手回复', + 'cat.tool': '工具结果', + 'cat.unknown': '未记录', + + 'kind.answer': '回答', + 'kind.thinking': '思考', + 'kind.tool-call': '工具调用', + 'kind.tool-result': '工具结果', + 'kind.schema': 'Schema', + 'kind.system': '系统', + 'kind.prompt': '用户', + 'kind.injection': '注入', + 'kind.compaction': '摘要', + 'kind.skill': '技能', + 'kind.image': '图片', + 'kind.attachment': '附件', + + 'form.context': '上下文', + 'form.reminder': '提醒', + 'form.todo': 'Todo 提醒', + 'form.agents': 'Agent 列表', + 'form.compaction': '压缩摘要', + 'form.skill': '技能', + 'form.background': '后台任务', + + 'trend.title': '上下文趋势', + 'trend.steps': '步骤', + 'trend.turns': '回合', + 'trend.total': '总量', + 'trend.delta': '变化', + 'trend.overview': '总览', + 'trend.dna': 'DNA', + 'trend.adaptive': '自适应', + 'trend.duration': '耗时', + 'trend.empty': '还没有可绘制的请求。', + 'trend.scrollTip': '拖动或横向滚动查看整个会话', + 'trend.hoverTip': '悬停查看请求;点击固定', + 'trend.actual': 'Provider 实际', + 'trend.prompt': '提示', + 'trend.output': '输出', + 'trend.cacheRead': '缓存读取', + 'trend.deltaNet': '净变化', + 'trend.compaction': '压缩', + 'trend.injection': '注入', + 'trend.model': '模型切换', + 'trend.rewind': '回退', + 'trend.turnStrip': '回合 {n}', + 'trend.brief': '这一步', + 'trend.earlier': '更早的请求不在当前页。', + 'trend.overviewTip': '把已加载的整个会话压成一条连续色带', + 'trend.dnaTip': '按提示顺序为每个上下文条目画一条带', + 'trend.adaptiveTip': '按可见最大值缩放柱高', + 'trend.durationTip': '叠加每个请求的耗时', + + 'brief.user': '用户', + 'brief.in': '进入', + 'brief.response': '响应', + 'brief.inCount': '{n} 个新条目', + 'brief.noResponse': '还没有记录到回复', + 'brief.tools': '{n} 个工具调用', + 'brief.empty': '这个请求没有记录到摘要。', + 'brief.jump': '在浏览器中打开', + + 'browser.title': '上下文浏览器', + 'browser.subtitle': '请求 #{step} · {count} 个条目 · {tokens}', + 'browser.estimated': '估算', + 'browser.actual': '实际', + 'browser.search': '筛选这个请求…', + 'browser.sort': '排序', + 'browser.sort.size': '大小', + 'browser.sort.name': '名称', + 'browser.sort.order': '提示顺序', + 'browser.sort.calls': '调用次数', + 'browser.calls': '{n} 次调用', + 'browser.mode': '视图', + 'browser.mode.categories': '分类', + 'browser.mode.changes': '变化', + 'browser.mode.dna': 'DNA', + 'browser.baseline': '对比', + 'browser.baseline.off': '关闭', + 'browser.baseline.step': '上一步', + 'browser.baseline.turn': '上一回合', + 'browser.changes.added': '新增', + 'browser.changes.removed': '移除', + 'browser.changes.changed': '变化', + 'browser.changes.empty': '相对基线没有新增或移除。', + 'browser.changes.unavailable': '这个请求没有可比较的基线。', + 'browser.changes.note': '变化是两次记录快照之间的差异,不是因果证明。', + 'browser.kindChips': '回复类型', + 'browser.kind.thinking': '思考', + 'browser.kind.tools': '工具', + 'browser.kind.answer': '回答', + 'browser.toolSource': '提供方:{source}', + 'browser.enter': '进入于步骤 {step}', + 'browser.enterLive': '本次请求进入', + 'browser.more': '还有 {n} 个条目', + 'browser.dnaTip': '按提示顺序摊平;从上到下为新到旧', + 'browser.dnaPos': '#{n}', + 'browser.empty': '这个请求没有记录到元素。', + 'browser.headerMissing': '这个较早的请求没有记录系统提示和工具 Schema。', + 'browser.headerEstimated': '头部取自最近的已记录请求;更早的头部版本没有被保留。', + 'browser.loadFailed': '这个请求加载失败。', + 'browser.searchEmpty': '没有条目匹配筛选。', + 'browser.filters': '筛选', + 'browser.clear': '清除', + + 'events.title': '上下文事件', + 'events.inject': '注入', + 'events.compaction': '压缩', + 'events.prune': '裁剪', + 'events.model': '切换', + 'events.mode': '模式', + 'events.rewind': '回退', + 'events.mcp': 'MCP', + 'events.all': '全部', + 'events.empty': '这个会话没有记录到上下文事件。', + 'events.noneMatch': '没有事件匹配这些筛选。', + 'events.showAll': '显示全部 {n}', + 'events.injectDetail': '运行时注入的上下文', + 'events.compactionDetail': '上下文压缩', + 'events.modelDetail': '模型已切换', + 'events.modeDetail': '执行模式变化', + 'events.rewindDetail': '会话已回退', + 'events.mcpDetail': 'MCP 工具已注册', + 'events.trigger.auto': '自动', + 'events.trigger.manual': '手动', + 'events.status.completed': '完成', + 'events.status.failed': '失败', + 'events.status.started': '开始', + 'events.status.retrying': '重试', + 'events.status.interrupted': '中断', + 'events.status.skipped': '跳过', + 'events.status.unknown': '未知', + 'events.summarized': '摘要了 {n} 条消息 · 保留 {kept} 条', + 'events.tokensSaved': '回收 {n} 个 Token', + 'events.atStep': '步骤 {step}', + 'events.whatSummarized': '被摘要的内容', + 'events.summarizedEmpty': '被摘要的消息不可用(已回退分支或行缺失)。', + 'events.showSummarized': '查看被摘要的消息', + 'events.openStep': '打开事件后的请求', + 'events.openItem': '打开注入条目', + 'events.beforeAfter': '对比前后', + 'events.before': '之前', + 'events.after': '之后', + 'events.messages': '消息', + 'events.duration': '耗时', + + 'files.title': '文件活动', + 'files.subtitle': '截至请求 #{step},Agent 对你的文件做了什么', + 'files.read': '读取', + 'files.written': '写入', + 'files.searched': '搜索', + 'files.images': '图片', + 'files.all': '全部', + 'files.search': '筛选路径…', + 'files.sort': '排序', + 'files.sort.count': '操作数', + 'files.sort.latest': '最近', + 'files.sort.path': '路径', + 'files.sort.name': '名称', + 'files.sort.added': '新增行', + 'files.ops': '{n} 次操作', + 'files.added': '+{n}', + 'files.removed': '−{n}', + 'files.empty': '还没有记录到文件操作。', + 'files.noneMatch': '没有文件匹配筛选。', + 'files.opsTitle': '操作', + 'files.opRead': '读取', + 'files.opWrite': '写入', + 'files.opSearch': '搜索', + 'files.shellEstimate': 'Shell 推断', + 'files.truncated': '仅显示前 {n} 个文件。', + 'files.openPath': '在浏览器中打开文件', + 'files.copyPath': '复制文件路径', + 'files.pattern': '搜索模式', + + 'coverage.title': '数据覆盖', + 'coverage.good': '每个请求都有完整的头部和完整的消息历史。', + 'coverage.retentionOff': '「完整保留模型 I/O」未开启。消息组成来自完整的会话存储;较早的系统提示和工具 Schema 可能是近似值。', + 'coverage.rolloutMissing': '这个会话没有找到模型 I/O 记录;系统提示和工具 Schema 不可用。', + 'coverage.headerEstimated': '{n} 个请求的头部按最近记录到的请求近似。', + 'coverage.headerMissing': '{n} 个请求缺少头部;提示总量中包含未记录的剩余部分。', + 'coverage.messages': '消息:完整会话存储', + 'coverage.headerExact': '{n} 个精确头部', + 'coverage.headerApprox': '{n} 个近似头部', + 'coverage.rollout': '模型 I/O:{value}', + 'coverage.rollout.full': '完整', + 'coverage.rollout.partial': '部分/尾部', + 'coverage.rollout.none': '无', + 'coverage.retention': '完整保留:{value}', + 'coverage.on': '开', + 'coverage.off': '关', + 'coverage.unknown': '未知', + 'coverage.learn': '如需精确的历史头部,请在 ZCode 设置 → 通用中开启「完整保留模型 I/O」。已经丢弃的记录无法恢复。', + 'coverage.details': '覆盖详情', + + 'fleet.title': 'Agent 编队', + 'fleet.subtitle': '当前 Agent、它的父级以及这个家族里的每个子 Agent', + 'fleet.agents': 'Agent', + 'fleet.running': '运行中', + 'fleet.billed': '家族计费', + 'fleet.cost': '预估费用', + 'fleet.empty': '没有找到这个家族的 Agent 会话。', + 'fleet.self': '当前', + 'fleet.ancestor': '父级', + 'fleet.child': '子 Agent', + 'fleet.sibling': '同级 Agent', + 'fleet.status.running': '运行中', + 'fleet.status.completed': '完成', + 'fleet.status.error': '错误', + 'fleet.status.cancelled': '取消', + 'fleet.status.idle': '空闲', + 'fleet.context': '上下文', + 'fleet.calls': '{n} 次调用', + 'fleet.steps': '{n} 步', + 'fleet.open': 'Agent 详情', + 'fleet.noSwitch': '面板宿主没有暴露会话切换能力;请在会话列表中打开这个 Agent。', + 'fleet.prompt': '初始提示', + 'fleet.lastReply': '最新回复', + 'fleet.children': '直接子 Agent', + 'fleet.you': '当前会话', + 'fleet.truncated': '家族节点已限制为 {n} 个。', + 'fleet.legend': '连线颜色跟随父级;脉动圆点表示正在运行的 Agent。', + + 'insights.title': '上下文洞察', + 'insights.subtitle': '一眼看清最近的每个会话', + 'insights.range.7d': '7 天', + 'insights.range.30d': '30 天', + 'insights.range.all': '全部', + 'insights.sessions': '会话', + 'insights.billed': '计费 Token', + 'insights.cost': '预估费用', + 'insights.cacheHit': '缓存命中', + 'insights.calls': '模型调用', + 'insights.context': '最新上下文', + 'insights.usage7': '每日计费 Token', + 'insights.usage7Tip': '最近 7 天由 Provider 报告的计费 Token', + 'insights.heatmap': '活跃度热力图', + 'insights.heatmapTip': '最近 8 周的每日计费 Token;点击某一天筛选会话', + 'insights.tokenMix': 'Token 构成', + 'insights.composition': '聚合组成', + 'insights.compositionNote': '范围内最近的 {n} 个会话', + 'insights.compositionLoading': '正在计算最常用会话的组成…', + 'insights.search': '筛选会话…', + 'insights.sort': '排序', + 'insights.sort.recent': '最近', + 'insights.sort.tokens': 'Token', + 'insights.sort.context': '上下文大小', + 'insights.group': '分组', + 'insights.group.none': '不分组', + 'insights.group.workspace': '工作区', + 'insights.empty': '这个范围内没有保留用量的会话。', + 'insights.noneMatch': '没有会话匹配筛选。', + 'insights.truncated': '显示 {shown} / {total} 个会话。可缩小范围或搜索以查看更多。', + 'insights.card.tokens': '{n} Token', + 'insights.card.cost': '费用', + 'insights.card.cache': '缓存', + 'insights.card.context': '上下文', + 'insights.card.updated': '更新于 {time}', + 'insights.coverage': '这里只显示本地仍保留用量行的会话。', + 'insights.openNote': '面板宿主没有暴露会话切换能力;请在会话列表中打开这个会话。', + + 'detail.title': '元素', + 'detail.chars': '{n} 字符', + 'detail.lines': '{n} 行', + 'detail.truncated': '显示 {shown} / {total} 个字符。', + 'detail.loadMore': '加载更多', + 'detail.tool': '工具', + 'detail.status': '状态', + 'detail.arguments': '参数', + 'detail.result': '结果', + 'detail.noArgs': '没有记录到参数。', + 'detail.noResult': '没有记录到结果正文。', + 'detail.attachment': '附件', + 'detail.dimensions': '{w}×{h}', + 'detail.bytes': '{size}', + 'detail.artifact': '已存储的附件', + 'detail.stepStamp': '进入于步骤 {step}', + 'detail.find': '在内容中查找…', + 'detail.findNone': '没有匹配', + 'detail.findCount': '{n} 处匹配', + 'detail.rawMode': '原始 JSON', + 'detail.safe': '内容按文本渲染,不加载外部资源。', + + 'settings.title': '偏好设置', + 'settings.defaultView': '默认视图', + 'settings.granularity': '趋势粒度', + 'settings.trendMode': '趋势模式', + 'settings.deltaBase': '对比基线', + 'settings.durationCurve': '耗时曲线', + 'settings.fileSort': '文件排序', + 'settings.toolSort': '工具排序', + 'settings.currency': '费用币种', + 'settings.language': '语言', + 'settings.contextWindow': '上下文窗口覆盖', + 'settings.contextWindowHint': '当 ZCode Provider 配置和内置目录都无法解析窗口时使用。0 = 自动。', + 'settings.compactCards': '紧凑卡片', + 'settings.reset': '恢复默认', + 'settings.saved': '偏好已保存', + 'settings.saveFailed': '偏好保存失败', + 'settings.auto': '自动', + 'settings.en': 'English', + 'settings.zh': '简体中文', + 'settings.usd': '美元 ($)', + 'settings.cny': '人民币 (¥)', + 'settings.step': '步骤', + 'settings.turn': '回合', + 'settings.total': '总量', + 'settings.delta': '变化', + 'settings.count': '操作数', + 'settings.latest': '最近', + 'settings.path': '路径', + 'settings.name': '名称', + 'settings.size': '大小', + 'settings.added': '新增行', + 'settings.data': '本地数据', + 'settings.dataRoot': '数据根目录', + 'settings.db': '会话数据库', + 'settings.pluginData': '偏好目录', + 'settings.retention': '完整保留模型 I/O', + 'settings.openSettingsHint': '在 ZCode 设置 → 通用中修改保留策略。', + 'settings.version': '版本', + + 'about.title': '关于 zcode-context-insight', + 'about.body': + '一个只读、离线的 ZCode 上下文洞察面板。它读取 ZCode 的本地会话存储和模型 I/O 轨迹;不会修改会话、不会调用模型,也不会访问网络。', + 'about.credits': '灵感来自 dsh-context,基于 ZCode 官方 MCP Apps UI 面板能力构建。', + 'about.source': '源码', + 'about.license': '许可证', + 'about.author': '作者', + 'about.storage': '读取位置', + 'about.storageValue': '~/.zcode/cli/{db,rollout,log}', + 'about.workspace': '工作区', + 'about.privacy': '没有遥测,没有外部请求,数据不离开这台机器。', + + 'error.title': '上下文不可用', + 'error.binding': '请从 ZCode 会话中打开这个面板以完成绑定。', + 'error.database': '无法读取本地 ZCode 数据库。', + 'error.timeout': '读取超时,请重试。', + 'error.worker': '上下文数据 Worker 已停止,请重新打开面板。', + 'error.generic': '读取这个会话时出现错误。', + 'error.detail': '所选条目无法加载。', + 'error.event': '压缩详情无法加载。', + 'error.offline': '面板没有连接到 ZCode 宿主。', + + 'time.justNow': '刚刚', + 'time.minute': '{n} 分钟前', + 'time.hour': '{n} 小时前', + 'time.day': '{n} 天前', + 'time.date': '{month}/{day}', + + 'tool.built-in': '内置', + 'tool.plugin': '插件', + 'tool.mcp': 'MCP', + + 'common.none': '—', + 'common.unknown': '未知', + 'common.total': '总计', + 'common.items': '{n} 个条目', + 'common.of': '/', + 'common.or': '或', + 'common.and': '和', + 'common.yes': '是', + 'common.no': '否', +} + +export const DICTS = { en: EN, zh: ZH } + +export function makeT(locale) { + const lang = String(locale ?? '').toLowerCase().startsWith('zh') ? 'zh' : 'en' + const dict = DICTS[lang] + return function t(key, vars) { + let text = dict[key] ?? EN[key] ?? key + if (vars && typeof vars === 'object') { + for (const [name, value] of Object.entries(vars)) { + text = text.replaceAll('{' + name + '}', String(value ?? '')) + } + } + return text + } +} diff --git a/ui-plugins/zcode-context-insight/ui/icon.svg b/ui-plugins/zcode-context-insight/ui/icon.svg new file mode 100644 index 0000000..2e5ffbc --- /dev/null +++ b/ui-plugins/zcode-context-insight/ui/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/ui-plugins/zcode-context-insight/ui/index.html b/ui-plugins/zcode-context-insight/ui/index.html new file mode 100644 index 0000000..34f264d --- /dev/null +++ b/ui-plugins/zcode-context-insight/ui/index.html @@ -0,0 +1,18 @@ + + + + + + + Context + + + +
+ + + diff --git a/ui-plugins/zcode-context-insight/ui/styles.css b/ui-plugins/zcode-context-insight/ui/styles.css new file mode 100644 index 0000000..fc0a4cb --- /dev/null +++ b/ui-plugins/zcode-context-insight/ui/styles.css @@ -0,0 +1,3828 @@ +:root, +[data-theme='light'] { + color-scheme: light; + --bg: #f5f6f8; + --panel: #ffffff; + --panel-2: #fafbfc; + --text: #1f2328; + --text-2: #4b5563; + --muted: #7b8493; + --faint: #9aa3af; + --border: #e3e6eb; + --border-strong: #d3d8df; + --track: #eef1f5; + --soft: #f3f5f8; + --soft-2: #eef2f7; + --accent: #4f46e5; + --accent-soft: #eef0ff; + --accent-text: #4338ca; + --good: #15803d; + --good-soft: #ecfdf3; + --danger: #b42318; + --danger-soft: #fef3f2; + --warn: #b45309; + --warn-soft: #fffbeb; + --shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06); + --shadow-lg: 0 20px 48px rgba(15, 23, 42, 0.18); + --cat-system: #6366f1; + --cat-tools: #f59e0b; + --cat-user: #22c55e; + --cat-inject: #a855f7; + --cat-skill: #f97316; + --cat-assistant: #3b82f6; + --cat-tool: #14b8a6; + --cat-unknown: #94a3b8; + --cat-output: #ec4899; + --timing-ttft: #f59e0b; + --timing-reasoning: #8b5cf6; + --timing-text: #3b82f6; + --timing-toolarg: #f97316; + --timing-tools: #14b8a6; + --timing-other: #cbd5e1; + --overview-duration: #ffffff; + --radius: 12px; + --radius-sm: 8px; + --header-height: 0px; +} + +[data-theme='dark'] { + color-scheme: dark; + --bg: #111418; + --panel: #181c22; + --panel-2: #1d222a; + --text: #e6e9ee; + --text-2: #b9c0cb; + --muted: #8f99a8; + --faint: #6b7584; + --border: #2a3039; + --border-strong: #3a4350; + --track: #252b34; + --soft: #20262e; + --soft-2: #27303a; + --accent: #818cf8; + --accent-soft: #262a4d; + --accent-text: #c7d2fe; + --good: #4ade80; + --good-soft: #10251a; + --danger: #fca5a5; + --danger-soft: #2c1616; + --warn: #fbbf24; + --warn-soft: #2a2110; + --shadow: 0 1px 2px rgba(0, 0, 0, 0.28); + --shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.55); + --cat-system: #818cf8; + --cat-tools: #fbbf24; + --cat-user: #4ade80; + --cat-inject: #c084fc; + --cat-skill: #fb923c; + --cat-assistant: #60a5fa; + --cat-tool: #2dd4bf; + --cat-unknown: #7c8798; + --cat-output: #f472b6; + --timing-other: #475569; + --overview-duration: #e2e8f0; +} + +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; + margin: 0; +} + +body { + background: var(--bg); + color: var(--text); + font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, + 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; + font-size: 12.5px; + line-height: 1.45; + -webkit-font-smoothing: antialiased; +} + +button, +input, +select, +textarea { + font: inherit; + color: inherit; +} + +button { + cursor: pointer; +} + +button:disabled { + cursor: default; +} + +::selection { + background: color-mix(in srgb, var(--accent) 28%, transparent); +} + +.zc-root { + height: 100%; + display: flex; + flex-direction: column; + background: var(--bg); + container-type: inline-size; + overflow: hidden; +} + +.zc-icon { + flex: 0 0 auto; + display: block; +} + +.zc-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + min-height: 28px; + padding: 4px 10px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); + background: var(--panel); + color: var(--text-2); + font-size: 12px; + font-weight: 550; + white-space: nowrap; + transition: background 120ms ease, border-color 120ms ease, color 120ms ease, transform 120ms ease; +} + +.zc-btn:hover { + background: var(--soft); + color: var(--text); + border-color: var(--border-strong); +} + +.zc-btn:active { + transform: translateY(0.5px); +} + +.zc-btn.is-active, +.zc-btn-accent { + background: var(--accent-soft); + border-color: color-mix(in srgb, var(--accent) 35%, var(--border)); + color: var(--accent-text); +} + +.zc-btn-primary { + background: var(--accent); + border-color: var(--accent); + color: #fff; + font-weight: 600; +} + +.zc-btn-primary:hover { + background: color-mix(in srgb, var(--accent) 88%, #000); + color: #fff; +} + +.zc-btn-tiny { + min-height: 24px; + padding: 2px 8px; + font-size: 11.5px; + border-radius: 7px; +} + +.zc-iconbtn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + border: 1px solid transparent; + border-radius: 8px; + background: transparent; + color: var(--muted); + transition: background 120ms ease, color 120ms ease; +} + +.zc-iconbtn:hover { + background: var(--soft); + color: var(--text); +} + +.zc-iconbtn-soft { + border-color: var(--border); + background: var(--panel); +} + +.zc-is-loading, +.is-spinning .zc-icon { + animation: zc-spin 1s linear infinite; +} + +@keyframes zc-spin { + to { + transform: rotate(360deg); + } +} + +.zc-pill { + display: inline-flex; + align-items: center; + gap: 4px; + max-width: 100%; + padding: 2px 7px; + border-radius: 999px; + border: 1px solid var(--border); + background: var(--panel-2); + color: var(--text-2); + font-size: 10.5px; + font-weight: 600; + letter-spacing: 0.01em; + white-space: nowrap; +} + +.zc-pill-soft { + background: var(--soft); + color: var(--muted); + font-weight: 600; +} + +.zc-pill-accent { + background: var(--accent-soft); + border-color: color-mix(in srgb, var(--accent) 25%, var(--border)); + color: var(--accent-text); +} + +.zc-muted { + color: var(--muted) !important; + font-weight: 450 !important; +} + +.zc-pos { + color: var(--good) !important; + font-variant-numeric: tabular-nums; +} + +.zc-neg { + color: var(--danger) !important; + font-variant-numeric: tabular-nums; +} + +.zc-header { + position: sticky; + top: 0; + z-index: 20; + padding: 10px 12px 0; + background: linear-gradient(180deg, var(--panel) 0%, color-mix(in srgb, var(--panel) 92%, var(--bg)) 100%); + border-bottom: 1px solid var(--border); + box-shadow: 0 1px 0 rgba(16, 24, 40, 0.02); +} + +.zc-brand { + display: flex; + align-items: flex-start; + gap: 9px; +} + +.zc-brand-mark { + display: flex; + align-items: center; + justify-content: center; + width: 30px; + height: 30px; + border-radius: 9px; + background: color-mix(in srgb, var(--panel) 70%, transparent); + border: 1px solid var(--border); + flex: 0 0 auto; +} + +.zc-brand-icon { + display: block; +} + +.zc-brand-text { + min-width: 0; + flex: 1 1 auto; + display: flex; + flex-direction: column; + gap: 1px; +} + +.zc-title-row { + display: flex; + align-items: center; + gap: 7px; + min-width: 0; +} + +.zc-title { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.01em; +} + +.zc-session-title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 12px; + font-weight: 600; + color: var(--text); +} + +.zc-session-meta { + display: flex; + flex-wrap: wrap; + gap: 4px 9px; + color: var(--muted); + font-size: 10.5px; +} + +.zc-actions { + display: flex; + align-items: center; + gap: 2px; + flex: 0 0 auto; +} + +.zc-tabs { + display: flex; + gap: 2px; + margin-top: 9px; +} + +.zc-tab { + position: relative; + display: inline-flex; + align-items: center; + gap: 5px; + padding: 7px 10px 8px; + border: 0; + border-bottom: 2px solid transparent; + background: transparent; + color: var(--muted); + font-size: 12px; + font-weight: 600; + border-radius: 7px 7px 0 0; +} + +.zc-tab:hover { + color: var(--text); + background: color-mix(in srgb, var(--soft) 65%, transparent); +} + +.zc-tab.is-active { + color: var(--accent-text); + border-bottom-color: var(--accent); +} + +.zc-tab-badge { + min-width: 17px; + padding: 0 4px; + border-radius: 999px; + background: var(--soft-2); + color: var(--muted); + font-size: 10px; + line-height: 16px; + text-align: center; +} + +.zc-stepbar { + display: flex; + align-items: center; + gap: 8px; + padding: 7px 0 8px; + flex-wrap: wrap; +} + +.zc-stepnav { + display: flex; + align-items: center; + gap: 2px; + min-width: 0; + flex: 1 1 260px; +} + +.zc-step-select { + flex: 1 1 auto; + min-width: 0; +} + +.zc-stepstatus { + display: flex; + align-items: center; + gap: 6px; + min-width: 0; + flex-wrap: wrap; +} + +.zc-pin { + display: inline-flex; + align-items: center; + gap: 5px; + color: var(--muted); + font-size: 10.5px; + white-space: nowrap; +} + +.zc-pin.is-pinned { + color: var(--accent-text); + font-weight: 600; +} + +.zc-live-dot { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--good); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--good) 15%, transparent); +} + +.zc-stepmeta { + display: flex; + align-items: center; + gap: 5px; + color: var(--muted); + font-size: 10.5px; + margin-left: auto; +} + +.zc-select, +.zc-input { + height: 28px; + padding: 3px 24px 3px 8px; + border: 1px solid var(--border); + border-radius: 7px; + background: var(--panel); + color: var(--text); + font-size: 11.5px; + outline: none; + max-width: 100%; +} + +.zc-select { + appearance: none; + background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), + linear-gradient(135deg, var(--muted) 50%, transparent 50%); + background-position: calc(100% - 13px) 12px, calc(100% - 8px) 12px; + background-size: 5px 5px, 5px 5px; + background-repeat: no-repeat; +} + +.zc-select-small { + height: 26px; + padding-top: 2px; + padding-bottom: 2px; + font-size: 11px; +} + +.zc-select:focus, +.zc-input:focus, +.zc-search:focus-within { + border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent); +} + +.zc-main { + flex: 1 1 auto; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + padding: 12px; + scrollbar-width: thin; + scrollbar-color: var(--border-strong) transparent; +} + +.zc-main::-webkit-scrollbar, +.zc-drawer-body::-webkit-scrollbar, +.zc-trend-scroll::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +.zc-main::-webkit-scrollbar-thumb, +.zc-drawer-body::-webkit-scrollbar-thumb, +.zc-trend-scroll::-webkit-scrollbar-thumb { + background: var(--border-strong); + border-radius: 8px; +} + +.zc-context { + display: flex; + flex-direction: column; + gap: 10px; +} + +.zc-stats-grid { + display: grid; + grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr) minmax(0, 1fr); + gap: 10px; + align-items: stretch; +} + +.zc-grid { + display: grid; + grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); + gap: 10px; + align-items: start; +} + +.zc-col-main, +.zc-col-side { + display: flex; + flex-direction: column; + gap: 10px; + min-width: 0; +} + +.zc-card { + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); + box-shadow: var(--shadow); + padding: 11px 12px; + min-width: 0; +} + +.zc-card-head { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 8px; + min-width: 0; + margin-bottom: 9px; +} + +.zc-card-titlewrap { + min-width: 0; +} + +.zc-card-title { + margin: 0; + font-size: 12px; + font-weight: 700; + letter-spacing: 0; + color: var(--text-2); +} + +.zc-card-sub { + margin-top: 1px; + font-size: 10.5px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-card-right { + display: flex; + align-items: center; + gap: 5px; + flex-wrap: wrap; + justify-content: flex-end; + min-width: 0; +} + +.zc-empty { + padding: 14px 6px; + color: var(--muted); + font-size: 11.5px; + text-align: center; +} + +.zc-note { + margin-top: 7px; + color: var(--muted); + font-size: 10.5px; + line-height: 1.5; +} + +.zc-note-warn { + color: var(--warn); + background: var(--warn-soft); + border: 1px solid color-mix(in srgb, var(--warn) 22%, var(--border)); + border-radius: 7px; + padding: 6px 8px; +} + +.zc-inline-error { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + padding: 10px; + border: 1px solid color-mix(in srgb, var(--danger) 30%, var(--border)); + border-radius: 8px; + background: var(--danger-soft); + color: var(--danger); + font-size: 11.5px; +} + +.zc-good { + display: flex; + align-items: center; + gap: 6px; + color: var(--good); + font-size: 11.5px; +} + +/* Stats flow */ +.zc-stats-body { + display: flex; + flex-direction: column; + gap: 8px; +} + +.zc-flow { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 5px; + position: relative; +} + +.zc-flow::before { + content: ''; + position: absolute; + left: 8%; + right: 8%; + top: 50%; + height: 1px; + background: var(--border); + z-index: 0; +} + +.zc-flow-node { + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + gap: 1px; + min-width: 0; + padding: 6px 6px 5px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel); + text-align: left; + color: var(--text); + transition: border-color 120ms ease, background 120ms ease; +} + +.zc-flow-node:not(:disabled):hover { + border-color: var(--border-strong); + background: var(--soft); +} + +.zc-flow-node.is-center { + background: linear-gradient(180deg, var(--accent-soft), var(--panel)); + border-color: color-mix(in srgb, var(--accent) 30%, var(--border)); +} + +.zc-flow-node.tone-user { + border-top-color: var(--cat-user); +} +.zc-flow-node.tone-inject { + border-top-color: var(--cat-inject); +} +.zc-flow-node.tone-tool { + border-top-color: var(--cat-tool); +} +.zc-flow-node.tone-cost { + border-top-color: var(--cat-output); +} + +.zc-flow-label { + color: var(--muted); + font-size: 9.5px; + font-weight: 600; + letter-spacing: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-flow-value { + font-size: 13px; + font-weight: 700; + font-variant-numeric: tabular-nums; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-stats-lower { + display: flex; + flex-direction: column; + gap: 4px; +} + +.zc-pills-row { + display: flex; + flex-wrap: wrap; + gap: 4px; +} + +.zc-mini-pill { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 2px 6px; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--panel-2); + color: var(--muted); + font-size: 10px; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-mini-pill b { + color: var(--text-2); + font-size: 10px; +} + +.zc-mini-pill.is-clickable:hover { + border-color: var(--border-strong); + background: var(--soft); +} + +.zc-mini-pill-more { + color: var(--faint); +} + +.zc-family-cell { + display: flex; + align-items: center; + gap: 7px; + width: 100%; + padding: 6px 8px; + border: 1px dashed color-mix(in srgb, var(--border-strong) 80%, transparent); + border-radius: 8px; + background: var(--panel-2); + text-align: left; + color: var(--text); +} + +.zc-family-cell:hover { + border-color: var(--accent); + background: var(--accent-soft); +} + +.zc-family-icon { + color: var(--accent); +} + +.zc-family-text { + display: flex; + flex-direction: column; + min-width: 0; +} + +.zc-family-text b { + font-size: 10.5px; + font-weight: 650; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-family-text small { + color: var(--muted); + font-size: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-stats-foot { + display: flex; + flex-wrap: wrap; + gap: 3px 10px; + color: var(--muted); + font-size: 10px; + padding-top: 2px; + border-top: 1px dashed var(--border); + margin-top: 1px; + padding-top: 6px; +} + +/* Donuts */ +.zc-donut-body { + display: flex; + align-items: center; + min-height: 104px; +} + +.zc-donut-row { + display: flex; + align-items: center; + gap: 10px; + min-width: 0; + width: 100%; +} + +.zc-donut-wrap { + position: relative; + flex: 0 0 auto; +} + +.zc-donut { + display: block; + overflow: visible; +} + +.zc-donut circle { + transition: opacity 120ms ease, stroke-width 120ms ease; +} + +.zc-donut circle[data-cat]:hover { + stroke-width: 13; +} + +.zc-donut-center { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0; + text-align: center; + pointer-events: none; +} + +.zc-donut-center b { + font-size: 15px; + font-weight: 750; + letter-spacing: -0.02em; + line-height: 1.1; + font-variant-numeric: tabular-nums; +} + +.zc-donut-center span { + color: var(--muted); + font-size: 9px; + text-transform: uppercase; + letter-spacing: 0.03em; +} + +.zc-slices { + display: flex; + flex-direction: column; + gap: 2px; + min-width: 0; + flex: 1 1 auto; +} + +.zc-slice { + display: grid; + grid-template-columns: 7px minmax(0, 1fr) auto auto; + gap: 4px; + align-items: center; + min-width: 0; + font-size: 10.5px; +} + +.zc-dot { + display: inline-block; + width: 7px; + height: 7px; + border-radius: 2px; + flex: 0 0 auto; +} + +.zc-slice-label { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--text-2); +} + +.zc-slice-value { + color: var(--text); + font-weight: 650; + font-variant-numeric: tabular-nums; +} + +.zc-slice-share { + color: var(--muted); + font-size: 10px; + min-width: 34px; + text-align: right; + font-variant-numeric: tabular-nums; +} + +.zc-slice-count { + color: var(--faint); + font-size: 9.5px; + grid-column: 2 / -1; + margin-top: -3px; +} + +.zc-timing-body { + display: flex; + flex-direction: column; + gap: 7px; +} + +.zc-strip { + display: flex; + height: 7px; + border-radius: 999px; + overflow: hidden; + background: var(--track); + width: 100%; +} + +.zc-strip-seg { + display: block; + height: 100%; + min-width: 1px; + opacity: 0.9; +} + +.zc-strip-gap { + display: block; + height: 100%; + background: color-mix(in srgb, var(--track) 70%, var(--panel)); +} + +/* Current context */ +.zc-current-head { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 8px; + flex-wrap: wrap; + margin-bottom: 8px; +} + +.zc-current-num { + display: flex; + align-items: baseline; + flex-wrap: wrap; + gap: 3px 5px; +} + +.zc-current-num b { + font-size: 19px; + font-weight: 750; + letter-spacing: -0.03em; + font-variant-numeric: tabular-nums; +} + +.zc-current-num span { + color: var(--muted); + font-size: 11px; +} + +.zc-current-num em { + font-style: normal; + padding: 1px 6px; + border-radius: 999px; + background: var(--accent-soft); + color: var(--accent-text); + font-size: 10px; + font-weight: 700; +} + +.zc-current-meta { + display: flex; + align-items: center; + gap: 4px; + color: var(--muted); + font-size: 10px; + min-width: 0; + max-width: 50%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-warn-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--warn); + flex: 0 0 auto; +} + +.zc-stacked { + position: relative; + display: flex; + width: 100%; + border-radius: 5px; + overflow: hidden; + background: var(--track); +} + +.zc-stacked-seg { + display: block; + height: 100%; + min-width: 1px; + transition: filter 120ms ease; +} + +.zc-stacked-seg:hover { + filter: brightness(1.08) saturate(1.1); +} + +.zc-stacked-reserve { + display: block; + height: 100%; + margin-left: auto; + background-image: repeating-linear-gradient( + 45deg, + color-mix(in srgb, var(--faint) 30%, transparent) 0, + color-mix(in srgb, var(--faint) 30%, transparent) 2px, + transparent 2px, + transparent 5px + ); + border-left: 1px dashed var(--border-strong); +} + +.zc-legend { + display: flex; + flex-wrap: wrap; + gap: 3px 9px; + margin-top: 8px; +} + +.zc-legend-item { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 10px; + color: var(--text-2); + white-space: nowrap; +} + +.zc-legend-item i { + width: 7px; + height: 7px; + border-radius: 2px; +} + +.zc-legend-item b { + font-weight: 650; + font-variant-numeric: tabular-nums; +} + +.zc-legend-item em { + color: var(--muted); + font-style: normal; + font-size: 9.5px; +} + +.zc-current-foot { + display: flex; + flex-wrap: wrap; + gap: 4px 10px; + margin-top: 8px; + padding-top: 7px; + border-top: 1px dashed var(--border); + color: var(--muted); + font-size: 10px; +} + +.zc-lastuser { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 100%; +} + +/* Trend */ +.zc-trend-controls { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 8px; +} + +.zc-segmented { + display: inline-flex; + padding: 2px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--soft); + gap: 1px; +} + +.zc-segbtn { + padding: 3px 7px; + border: 0; + border-radius: 6px; + background: transparent; + color: var(--muted); + font-size: 10.5px; + font-weight: 600; + white-space: nowrap; +} + +.zc-segbtn:hover { + color: var(--text); +} + +.zc-segbtn.is-active { + background: var(--panel); + color: var(--text); + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08); +} + +.zc-toggles { + display: flex; + flex-wrap: wrap; + gap: 3px; + margin-left: auto; +} + +.zc-toggle { + padding: 3px 6px; + border: 1px solid transparent; + border-radius: 6px; + background: transparent; + color: var(--muted); + font-size: 10px; +} + +.zc-toggle:hover { + background: var(--soft); + color: var(--text); +} + +.zc-toggle.is-active { + border-color: var(--border); + background: var(--panel); + color: var(--accent-text); + font-weight: 650; +} + +.zc-trend-wrap { + min-width: 0; +} + +.zc-trend-scroll { + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 2px; +} + +.zc-trend-inner { + min-width: max-content; +} + +.zc-trend-chart { + position: relative; + padding-top: 13px; +} + +.zc-bars-row { + display: flex; + gap: 0; + align-items: stretch; + height: 142px; +} + +.zc-axis { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 34px; + flex: 0 0 34px; + padding: 1px 3px 1px 0; + color: var(--faint); + font-size: 8.5px; + text-align: right; + font-variant-numeric: tabular-nums; +} + +.zc-bars { + display: flex; + align-items: flex-end; + gap: 6px; + border-bottom: 1px solid var(--border); + padding: 0 7px 0 2px; + height: 100%; +} + +.zc-bar { + flex: 0 0 12px; + width: 12px; + height: 100%; + display: flex; + align-items: flex-end; + justify-content: center; + position: relative; + outline: none; + cursor: pointer; +} + +.zc-bar::after { + content: ''; + position: absolute; + inset: -2px -3px; + border-radius: 4px; + border: 1px solid transparent; + pointer-events: none; +} + +.zc-bar:hover::after, +.zc-bar:focus-visible::after { + border-color: color-mix(in srgb, var(--accent) 35%, transparent); + background: color-mix(in srgb, var(--accent) 5%, transparent); +} + +.zc-bar.is-selected::after { + border-color: var(--accent); + background: color-mix(in srgb, var(--accent) 7%, transparent); +} + +.zc-bar-stack { + width: 10px; + height: 100%; + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; + border-radius: 2px 2px 0 0; + overflow: hidden; +} + +.zc-bar-seg { + display: block; + width: 100%; + min-height: 1px; +} + +.zc-bar-seg:hover { + filter: brightness(1.12); +} + +.zc-bar-delta { + width: 10px; + height: 100%; + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.zc-bar-up { + height: 50%; + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; +} + +.zc-bar-down { + height: 50%; + display: flex; + flex-direction: column; + justify-content: flex-start; + opacity: 0.75; +} + +.zc-zero { + display: block; + height: 1px; + background: var(--border-strong); +} + +.zc-markers { + position: relative; + height: 13px; + margin-left: 34px; +} + +.zc-marker { + position: absolute; + top: 0; + display: flex; + gap: 1px; + transform: translateX(-50%); +} + +.zc-marker-dot { + display: inline-flex; + align-items: center; + justify-content: center; + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--panel); + border: 1px solid var(--border); + color: var(--muted); + font-size: 7px; + line-height: 1; + box-shadow: var(--shadow); +} + +.zc-marker-dot[data-kind='compaction'] { + color: var(--cat-skill); + border-color: color-mix(in srgb, var(--cat-skill) 35%, var(--border)); +} +.zc-marker-dot[data-kind='model'] { + color: var(--cat-assistant); + border-color: color-mix(in srgb, var(--cat-assistant) 35%, var(--border)); +} +.zc-marker-dot[data-kind='rewind'] { + color: var(--cat-inject); + border-color: color-mix(in srgb, var(--cat-inject) 35%, var(--border)); +} + +.zc-turnband { + position: relative; + height: 15px; + margin-left: 34px; + margin-top: 2px; +} + +.zc-turnlabel { + position: absolute; + top: 0; + padding-left: 4px; + color: var(--faint); + font-size: 8.5px; + letter-spacing: 0.02em; + border-left: 1px solid var(--border); + white-space: nowrap; +} + +.zc-duration { + display: block; + margin-left: 34px; + opacity: 0.85; +} + +.zc-overview { + display: flex; + flex-direction: column; + gap: 5px; +} + +.zc-overview-strip { + display: flex; + width: 100%; + height: 54px; + border-radius: 6px; + overflow: hidden; + background: var(--track); +} + +.zc-overview-bar { + display: flex; + flex-direction: column-reverse; + flex: 1 0 1px; + min-width: 1px; + padding: 0; + border: 0; + border-radius: 0; + overflow: hidden; + opacity: 0.9; +} + +.zc-overview-bar:hover, +.zc-overview-bar.is-selected { + opacity: 1; + outline: 1px solid var(--accent); + outline-offset: -1px; +} + +.zc-overview-bar span { + display: block; + width: 100%; +} + +.zc-overview-note { + color: var(--muted); + font-size: 10px; +} + +.zc-brief { + margin-top: 9px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--panel-2); + padding: 7px 9px; + display: flex; + flex-direction: column; + gap: 4px; +} + +.zc-brief-head { + display: flex; + justify-content: space-between; + color: var(--muted); + font-size: 9.5px; + font-weight: 650; + text-transform: uppercase; + letter-spacing: 0.03em; +} + +.zc-brief-row { + display: grid; + grid-template-columns: 64px minmax(0, 1fr); + gap: 6px; + align-items: start; + min-width: 0; + padding: 2px 3px; + border-radius: 5px; +} + +.zc-brief-row.is-clickable:hover { + background: var(--soft); +} + +.zc-brief-label { + color: var(--muted); + font-size: 10px; + font-weight: 650; + padding-top: 1px; +} + +.zc-brief-text { + color: var(--text-2); + font-size: 10.5px; + min-width: 0; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.zc-brief-in { + display: flex; + flex-wrap: wrap; + gap: 3px; + min-width: 0; +} + +.zc-brief-chip { + display: inline-flex; + align-items: center; + gap: 4px; + max-width: 100%; + padding: 1px 5px; + border: 1px solid var(--border); + border-radius: 5px; + background: var(--panel); + color: var(--text-2); + font-size: 9.5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.zc-brief-chip i { + width: 5px; + height: 5px; + border-radius: 1px; + flex: 0 0 auto; +} + +.zc-brief-chip b { + color: var(--muted); + font-size: 9px; +} + +.zc-brief.is-loading { + gap: 5px; +} + +.zc-skel-line { + height: 8px; + border-radius: 4px; + background: linear-gradient(90deg, var(--soft) 25%, var(--soft-2) 50%, var(--soft) 75%); + background-size: 200% 100%; + animation: zc-shimmer 1.6s ease infinite; +} + +/* Browser */ +.zc-browser-controls { + display: flex; + flex-direction: column; + gap: 6px; + margin-bottom: 8px; +} + +.zc-segmented-wide { + align-self: flex-start; +} + +.zc-browser-filters { + display: flex; + gap: 5px; + align-items: center; + min-width: 0; +} + +.zc-field-inline { + display: flex; + align-items: center; + gap: 5px; + color: var(--muted); + font-size: 10px; +} + +.zc-search { + display: flex; + align-items: center; + gap: 5px; + flex: 1 1 auto; + min-width: 0; + height: 28px; + padding: 0 8px; + border: 1px solid var(--border); + border-radius: 7px; + background: var(--panel); + color: var(--muted); +} + +.zc-search input { + flex: 1 1 auto; + min-width: 0; + border: 0; + outline: 0; + background: transparent; + color: var(--text); + font-size: 11px; +} + +.zc-search input::placeholder { + color: var(--faint); +} + +.zc-search-small { + height: 26px; + flex: 0 1 150px; +} + +.zc-browser-body { + min-width: 0; +} + +.zc-cats { + display: flex; + flex-direction: column; + gap: 3px; +} + +.zc-cat { + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; + background: var(--panel); +} + +.zc-cat-head { + display: flex; + align-items: center; + gap: 5px; + width: 100%; + padding: 6px 7px; + border: 0; + background: var(--panel-2); + color: var(--text); + text-align: left; + min-width: 0; +} + +.zc-cat-head:hover { + background: var(--soft); +} + +.zc-cat-name { + font-size: 10.5px; + font-weight: 650; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-cat-count { + color: var(--faint); + font-size: 9.5px; + margin-left: auto; +} + +.zc-cat-tokens { + color: var(--muted); + font-size: 9.5px; + font-variant-numeric: tabular-nums; +} + +.zc-cat-chevron { + color: var(--faint); + display: flex; +} + +.zc-diff-badges { + display: inline-flex; + gap: 2px; + flex-wrap: wrap; +} + +.zc-badge-add, +.zc-badge-remove { + display: inline-block; + padding: 0 3px; + border-radius: 3px; + font-size: 8.5px; + font-style: normal; + font-weight: 650; + font-variant-numeric: tabular-nums; +} + +.zc-badge-add { + background: var(--good-soft); + color: var(--good); +} + +.zc-badge-remove { + background: var(--danger-soft); + color: var(--danger); +} + +.zc-cat-body { + border-top: 1px solid var(--border); +} + +.zc-kindchips { + display: flex; + flex-wrap: wrap; + gap: 3px; + padding: 5px 6px 2px; +} + +.zc-kindchip { + display: inline-flex; + align-items: center; + gap: 3px; + padding: 2px 6px; + border: 1px solid var(--border); + border-radius: 999px; + background: var(--panel); + color: var(--muted); + font-size: 9.5px; + white-space: nowrap; +} + +.zc-kindchip b { + color: var(--faint); + font-size: 8.5px; +} + +.zc-kindchip:hover { + border-color: var(--border-strong); + color: var(--text); +} + +.zc-kindchip.is-active { + background: var(--accent-soft); + border-color: color-mix(in srgb, var(--accent) 30%, var(--border)); + color: var(--accent-text); + font-weight: 650; +} + +.zc-itemrow { + display: flex; + align-items: flex-start; + gap: 6px; + width: 100%; + padding: 6px 7px; + border: 0; + border-bottom: 1px solid color-mix(in srgb, var(--border) 65%, transparent); + background: transparent; + text-align: left; + color: var(--text); + min-width: 0; +} + +.zc-itemrow:last-child { + border-bottom: 0; +} + +.zc-itemrow:hover { + background: var(--soft); +} + +.zc-item-token { + flex: 0 0 auto; + min-width: 34px; + padding-top: 1px; + color: var(--muted); + font-size: 9px; + font-variant-numeric: tabular-nums; + text-align: right; +} + +.zc-item-main { + display: flex; + flex-direction: column; + gap: 1px; + min-width: 0; + flex: 1 1 auto; +} + +.zc-item-title { + font-size: 10.5px; + font-weight: 620; + line-height: 1.35; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + word-break: break-word; +} + +.zc-item-preview { + color: var(--muted); + font-size: 9.5px; + line-height: 1.35; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; + word-break: break-word; +} + +.zc-item-meta { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 2px 4px; + margin-top: 2px; + color: var(--faint); + font-size: 8.5px; +} + +.zc-chip { + display: inline-flex; + align-items: center; + gap: 3px; + max-width: 100%; + padding: 0 4px; + border: 1px solid var(--border); + border-radius: 4px; + background: var(--panel-2); + color: var(--muted); + font-size: 8.5px; + line-height: 15px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.zc-chip em { + font-style: normal; + color: var(--faint); + border-left: 1px solid var(--border); + padding-left: 3px; + margin-left: 1px; +} + +.zc-chip-soft { + border-color: transparent; + background: var(--soft); + color: var(--faint); +} + +.zc-enter { + color: var(--faint); + font-size: 8.5px; +} + +.zc-status-dot { + width: 6px; + height: 6px; + border-radius: 50%; + flex: 0 0 auto; + background: var(--faint); +} + +.zc-status-dot[data-status='completed'] { + background: var(--good); +} +.zc-status-dot[data-status='error'] { + background: var(--danger); +} +.zc-status-dot[data-status='running'] { + background: var(--accent); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent); +} +.zc-status-dot[data-status='cancelled'] { + background: var(--warn); +} + +.zc-item-go { + color: var(--faint); + flex: 0 0 auto; + padding-top: 2px; + opacity: 0; + transition: opacity 120ms ease; +} + +.zc-itemrow:hover .zc-item-go { + opacity: 1; +} + +.zc-morebtn { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + width: 100%; + padding: 6px; + border: 0; + border-top: 1px solid var(--border); + background: var(--panel-2); + color: var(--muted); + font-size: 10px; +} + +.zc-morebtn:hover { + background: var(--soft); + color: var(--text); +} + +.zc-changes { + display: flex; + flex-direction: column; + gap: 6px; +} + +.zc-changes-cats { + display: flex; + flex-direction: column; + gap: 2px; + padding: 4px 6px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); +} + +.zc-change-cat { + display: flex; + align-items: center; + gap: 5px; + font-size: 10px; + color: var(--text-2); +} + +.zc-change-cat em { + margin-left: auto; + font-style: normal; + font-variant-numeric: tabular-nums; +} + +.zc-change-section { + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; +} + +.zc-change-title { + display: flex; + align-items: center; + gap: 5px; + padding: 5px 7px; + border-bottom: 1px solid var(--border); + background: var(--panel-2); + color: var(--muted); + font-size: 9.5px; + font-weight: 650; + text-transform: uppercase; + letter-spacing: 0.02em; +} + +.zc-change-title.tone-add { + color: var(--good); +} +.zc-change-title.tone-remove { + color: var(--danger); +} + +.zc-change-title b { + margin-left: auto; + font-size: 9px; +} + +.zc-changed-row { + display: flex; + justify-content: space-between; + gap: 8px; + padding: 5px 7px; + border-bottom: 1px solid var(--border); + font-size: 10px; +} + +.zc-dna { + display: flex; + flex-direction: column; + gap: 2px; +} + +.zc-dna-row { + display: flex; + align-items: center; + gap: 5px; + width: 100%; + padding: 4px 5px; + border: 1px solid transparent; + border-radius: 5px; + background: transparent; + text-align: left; + color: var(--text); + font-size: 9.5px; +} + +.zc-dna-row:hover { + background: var(--soft); + border-color: var(--border); +} + +.zc-dna-pos { + color: var(--faint); + font-variant-numeric: tabular-nums; + min-width: 28px; +} + +.zc-dna-cat { + color: var(--muted); + min-width: 58px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-dna-title { + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-dna-token { + color: var(--muted); + font-variant-numeric: tabular-nums; + font-size: 9px; +} + +/* Events */ +.zc-event-filters, +.zc-file-filters { + display: flex; + flex-wrap: wrap; + gap: 3px; + align-items: center; + margin-bottom: 7px; +} + +.zc-events, +.zc-files { + display: flex; + flex-direction: column; +} + +.zc-eventrow { + display: flex; + align-items: flex-start; + gap: 6px; + width: 100%; + padding: 6px 5px; + border: 0; + border-bottom: 1px solid color-mix(in srgb, var(--border) 65%, transparent); + background: transparent; + text-align: left; + color: var(--text); +} + +.zc-eventrow:hover { + background: var(--soft); +} + +.zc-event-icon { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border-radius: 6px; + background: var(--soft); + color: var(--muted); + font-size: 10px; + flex: 0 0 auto; +} + +.zc-event-icon[data-kind='inject'] { + color: var(--cat-inject); + background: color-mix(in srgb, var(--cat-inject) 10%, var(--panel)); +} +.zc-event-icon[data-kind='compaction'] { + color: var(--cat-skill); + background: color-mix(in srgb, var(--cat-skill) 10%, var(--panel)); +} +.zc-event-icon[data-kind='model'] { + color: var(--cat-assistant); + background: color-mix(in srgb, var(--cat-assistant) 10%, var(--panel)); +} +.zc-event-icon[data-kind='rewind'] { + color: var(--cat-inject); +} + +.zc-event-main { + display: flex; + flex-direction: column; + gap: 1px; + min-width: 0; + flex: 1 1 auto; +} + +.zc-event-title { + display: flex; + align-items: center; + gap: 5px; + font-size: 10.5px; + font-weight: 620; + min-width: 0; +} + +.zc-event-title > span { + font-weight: 600; + font-variant-numeric: tabular-nums; +} + +.zc-event-detail { + color: var(--muted); + font-size: 9.5px; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + word-break: break-word; +} + +.zc-event-meta { + display: flex; + flex-wrap: wrap; + gap: 3px 8px; + color: var(--faint); + font-size: 8.5px; + margin-top: 1px; +} + +.zc-event-go { + color: var(--faint); + opacity: 0; + padding-top: 1px; +} + +.zc-eventrow:hover .zc-event-go { + opacity: 1; +} + +/* Files */ +.zc-files-body { + min-width: 0; +} + +.zc-filerow { + border-bottom: 1px solid color-mix(in srgb, var(--border) 65%, transparent); +} + +.zc-filerow:last-child { + border-bottom: 0; +} + +.zc-filehead { + display: flex; + align-items: center; + gap: 6px; + width: 100%; + padding: 6px 4px; + border: 0; + background: transparent; + text-align: left; + color: var(--text); + min-width: 0; +} + +.zc-filehead:hover { + background: var(--soft); +} + +.zc-fileglyph { + display: inline-flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border-radius: 5px; + background: var(--soft); + font-size: 10px; + flex: 0 0 auto; +} + +.zc-fileglyph-code { + background: color-mix(in srgb, var(--cat-assistant) 12%, var(--panel)); + color: var(--cat-assistant); + font-size: 8px; + font-weight: 750; +} + +.zc-filemain { + display: flex; + flex-direction: column; + gap: 1px; + min-width: 0; + flex: 1 1 auto; +} + +.zc-filepath { + font-size: 10px; + font-weight: 600; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + direction: rtl; + text-align: left; +} + +.zc-filemeta { + display: flex; + gap: 3px; + flex-wrap: wrap; + align-items: center; + font-size: 8.5px; +} + +.zc-fileops { + color: var(--faint); + font-size: 9px; + flex: 0 0 auto; +} + +.zc-fileops-body { + padding: 2px 4px 7px 30px; + display: flex; + flex-direction: column; + gap: 1px; +} + +.zc-oprow { + display: flex; + align-items: center; + gap: 5px; + padding: 3px 4px; + border: 0; + border-radius: 4px; + background: transparent; + color: var(--text-2); + text-align: left; + font-size: 9px; + min-width: 0; +} + +.zc-oprow:hover { + background: var(--soft); +} + +.zc-opkind { + padding: 0 4px; + border-radius: 3px; + background: var(--soft); + color: var(--muted); + font-size: 8px; + line-height: 14px; +} + +.zc-opkind[data-kind='read'] { + color: var(--cat-user); +} +.zc-opkind[data-kind='write'] { + color: var(--cat-assistant); +} +.zc-opkind[data-kind='search'] { + color: var(--cat-tools); +} + +.zc-optool { + min-width: 38px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-optime { + color: var(--faint); + margin-left: auto; +} + +.zc-opgo { + color: var(--faint); + display: flex; +} + +.zc-file-actions { + display: flex; + gap: 4px; + margin-top: 3px; +} + +/* Coverage */ +.zc-coverage { + display: flex; + flex-direction: column; + gap: 4px; +} + +.zc-coverage-grid { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 3px 8px; + color: var(--muted); + font-size: 9.5px; + padding: 6px 0; +} + +/* Footer */ +.zc-footer { + display: flex; + justify-content: space-between; + gap: 8px; + padding: 7px 12px; + border-top: 1px solid var(--border); + background: var(--panel); + color: var(--faint); + font-size: 9.5px; + flex-wrap: wrap; +} + +.zc-footer-right { + display: flex; + align-items: center; + gap: 8px; +} + +.zc-linkbtn { + padding: 0; + border: 0; + background: transparent; + color: var(--accent-text); + font-size: 9.5px; + text-decoration: underline; + text-underline-offset: 2px; +} + +/* Fleet */ +.zc-fleet { + display: flex; + flex-direction: column; + gap: 10px; +} + +.zc-fleet-kpis, +.zc-kpi-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 7px; +} + +.zc-kpi { + display: flex; + flex-direction: column; + gap: 1px; + padding: 8px 9px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--panel); + box-shadow: var(--shadow); + min-width: 0; +} + +.zc-kpi b { + font-size: 16px; + font-weight: 750; + letter-spacing: -0.02em; + font-variant-numeric: tabular-nums; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-kpi span { + color: var(--muted); + font-size: 9.5px; + text-transform: uppercase; + letter-spacing: 0.02em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-agent-tree { + display: flex; + flex-direction: column; + gap: 5px; + position: relative; +} + +.zc-agent-node { + position: relative; + padding-left: calc(var(--depth, 0) * 16px); +} + +.zc-agent-rail { + position: absolute; + top: -5px; + bottom: -5px; + border-left: 1px solid var(--border-strong); +} + +.zc-agent-card { + display: flex; + align-items: flex-start; + gap: 7px; + width: 100%; + padding: 8px 9px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--panel); + box-shadow: var(--shadow); + text-align: left; + color: var(--text); + transition: border-color 120ms ease, transform 120ms ease; +} + +.zc-agent-card:hover { + border-color: var(--border-strong); + transform: translateY(-1px); +} + +.zc-agent-card.is-self { + border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); + background: linear-gradient(180deg, var(--accent-soft), var(--panel)); +} + +.zc-agent-status { + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; + padding-top: 3px; + flex: 0 0 auto; +} + +.zc-agent-status i { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--faint); +} + +.zc-agent-status.completed i { + background: var(--good); +} +.zc-agent-status.error i { + background: var(--danger); +} +.zc-agent-status.running i { + background: var(--accent); +} +.zc-agent-status.cancelled i { + background: var(--warn); +} + +.zc-pulse { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--accent); + animation: zc-pulse 1.4s ease-out infinite; + margin-top: -9px; +} + +@keyframes zc-pulse { + 0% { + transform: scale(1); + opacity: 0.7; + } + 100% { + transform: scale(2.6); + opacity: 0; + } +} + +.zc-agent-main { + display: flex; + flex-direction: column; + gap: 2px; + min-width: 0; + flex: 1 1 auto; +} + +.zc-agent-title { + font-size: 10.5px; + font-weight: 650; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-agent-meta { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 3px; + font-size: 8.5px; +} + +.zc-agent-usage { + display: flex; + flex-wrap: wrap; + gap: 3px 8px; + font-size: 9px; + color: var(--text-2); + font-variant-numeric: tabular-nums; +} + +.zc-agent-bar { + display: flex; + align-items: center; + gap: 5px; + height: 5px; + border-radius: 999px; + background: var(--track); + margin-top: 2px; + overflow: visible; +} + +.zc-agent-bar-fill { + display: block; + height: 100%; + border-radius: 999px; + background: linear-gradient(90deg, var(--accent), var(--cat-assistant)); +} + +.zc-agent-bar em { + font-style: normal; + font-size: 8px; + color: var(--faint); + white-space: nowrap; +} + +/* Insights */ +.zc-insights { + display: flex; + flex-direction: column; + gap: 10px; +} + +.zc-insights-controls { + display: flex; + flex-wrap: wrap; + gap: 5px; + align-items: center; +} + +.zc-insight-grid { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 10px; +} + +.zc-card-mini { + min-height: 150px; +} + +.zc-daily { + display: flex; + align-items: flex-end; + gap: 5px; + height: 108px; + padding-top: 4px; +} + +.zc-daily-col { + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: center; + gap: 2px; + flex: 1 1 0; + height: 100%; + min-width: 0; +} + +.zc-daily-bar { + width: 70%; + min-height: 2px; + border-radius: 3px 3px 0 0; + background: linear-gradient(180deg, var(--cat-assistant), var(--accent)); +} + +.zc-daily-label { + color: var(--faint); + font-size: 8px; + white-space: nowrap; +} + +.zc-daily-cost { + color: var(--muted); + font-size: 7.5px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.zc-heat-wrap { + display: flex; + flex-direction: column; + gap: 5px; +} + +.zc-heatmap { + display: grid; + grid-template-columns: repeat(8, minmax(0, 1fr)); + grid-template-rows: repeat(7, 1fr); + gap: 3px; + aspect-ratio: 8 / 7; + max-height: 112px; +} + +.zc-heatcell { + border: 0; + border-radius: 2px; + background: var(--track); + padding: 0; + min-width: 0; + min-height: 0; +} + +.zc-heatcell[data-level='1'] { + background: color-mix(in srgb, var(--accent) 22%, var(--track)); +} +.zc-heatcell[data-level='2'] { + background: color-mix(in srgb, var(--accent) 40%, var(--track)); +} +.zc-heatcell[data-level='3'] { + background: color-mix(in srgb, var(--accent) 62%, var(--track)); +} +.zc-heatcell[data-level='4'] { + background: color-mix(in srgb, var(--accent) 88%, var(--track)); +} + +.zc-heatcell:hover, +.zc-heatcell.is-selected { + outline: 1.5px solid var(--accent); + outline-offset: 1px; +} + +.zc-session-cards { + display: flex; + flex-direction: column; + gap: 5px; +} + +.zc-group-head { + display: flex; + align-items: center; + gap: 5px; + margin-top: 7px; + color: var(--muted); + font-size: 9.5px; + font-weight: 650; + text-transform: uppercase; + letter-spacing: 0.02em; +} + +.zc-session-card { + display: flex; + flex-direction: column; + gap: 3px; + width: 100%; + padding: 8px 9px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--panel); + box-shadow: var(--shadow); + text-align: left; + color: var(--text); + transition: border-color 120ms ease, transform 120ms ease; +} + +.zc-session-card:hover { + border-color: var(--border-strong); + transform: translateY(-1px); +} + +.zc-session-top { + display: flex; + justify-content: space-between; + gap: 8px; + min-width: 0; +} + +.zc-session-name { + font-size: 10.5px; + font-weight: 650; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-session-time { + color: var(--faint); + font-size: 8.5px; + white-space: nowrap; + flex: 0 0 auto; +} + +.zc-session-dir { + color: var(--muted); + font-size: 9px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-session-metrics { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 4px 8px; + font-size: 9.5px; + color: var(--text-2); + font-variant-numeric: tabular-nums; +} + +.zc-session-metrics b { + font-weight: 650; +} + +.zc-context-chip { + padding: 0 4px; + border-radius: 3px; + background: var(--accent-soft); + color: var(--accent-text); + font-size: 8px; + font-weight: 650; +} + +.zc-session-bar { + display: block; + height: 3px; + border-radius: 999px; + background: var(--track); + overflow: hidden; +} + +.zc-session-bar span { + display: block; + height: 100%; + background: linear-gradient(90deg, var(--cat-assistant), var(--accent)); +} + +.zc-session-model { + color: var(--faint); + font-size: 8.5px; +} + +/* Overlay / drawer */ +.zc-overlay { + position: fixed; + inset: 0; + z-index: 100; + display: flex; + justify-content: flex-end; + background: color-mix(in srgb, #0f172a 32%, transparent); + backdrop-filter: blur(2px); +} + +.zc-drawer { + display: flex; + flex-direction: column; + width: min(720px, 94vw); + height: 100%; + background: var(--panel); + border-left: 1px solid var(--border); + box-shadow: var(--shadow-lg); +} + +.zc-drawer-head { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 10px; + padding: 12px 13px; + border-bottom: 1px solid var(--border); + flex: 0 0 auto; +} + +.zc-drawer-titles { + display: flex; + align-items: flex-start; + gap: 6px; + min-width: 0; +} + +.zc-drawer-titles h2 { + margin: 0; + font-size: 13px; + font-weight: 700; + line-height: 1.35; + overflow-wrap: anywhere; +} + +.zc-drawer-sub { + color: var(--muted); + font-size: 10px; + margin-top: 2px; +} + +.zc-drawer-actions { + display: flex; + align-items: center; + gap: 3px; + flex: 0 0 auto; +} + +.zc-drawer-actionrow { + display: flex; + gap: 3px; +} + +.zc-drawer-body { + flex: 1 1 auto; + min-height: 0; + overflow-y: auto; + padding: 12px 13px 20px; + scrollbar-width: thin; +} + +.zc-element, +.zc-event-detail, +.zc-member, +.zc-settings, +.zc-about { + display: flex; + flex-direction: column; + gap: 10px; +} + +.zc-element-meta { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 4px; +} + +.zc-element-section { + display: flex; + flex-direction: column; + gap: 5px; + min-width: 0; +} + +.zc-element-section h3 { + margin: 0; + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.03em; + color: var(--muted); +} + +.zc-element-sectionhead { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + flex-wrap: wrap; +} + +.zc-argtable { + width: 100%; + border-collapse: collapse; + table-layout: fixed; + font-size: 10px; +} + +.zc-argtable th { + width: 105px; + vertical-align: top; + text-align: left; + color: var(--muted); + font-weight: 600; + padding: 4px 6px 4px 0; + border-bottom: 1px solid var(--border); + overflow-wrap: anywhere; +} + +.zc-argtable td { + vertical-align: top; + padding: 4px 0; + border-bottom: 1px solid var(--border); +} + +.zc-argvalue { + margin: 0; + white-space: pre-wrap; + overflow-wrap: anywhere; + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 9.5px; + color: var(--text-2); + max-height: 180px; + overflow: auto; +} + +.zc-pre { + margin: 0; + padding: 9px 10px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); + color: var(--text-2); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; + font-size: 10px; + line-height: 1.5; + white-space: pre-wrap; + overflow-wrap: anywhere; + max-height: 62vh; + overflow: auto; +} + +.zc-pre-small { + max-height: 220px; + font-size: 9.5px; +} + +.zc-markdown { + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); + padding: 9px 11px; + font-size: 11px; + line-height: 1.55; + color: var(--text-2); + overflow-wrap: anywhere; + max-height: 62vh; + overflow: auto; +} + +.zc-markdown p { + margin: 0 0 7px; +} + +.zc-markdown p:last-child { + margin-bottom: 0; +} + +.zc-markdown h3, +.zc-markdown h4, +.zc-markdown h5 { + margin: 12px 0 5px; + color: var(--text); + font-size: 11.5px; +} + +.zc-markdown ul, +.zc-markdown ol { + margin: 4px 0 8px; + padding-left: 20px; +} + +.zc-markdown li { + margin: 2px 0; +} + +.zc-markdown code { + padding: 1px 4px; + border-radius: 4px; + background: var(--soft); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 9.5px; +} + +.zc-code { + margin: 6px 0; + padding: 8px; + border-radius: 6px; + background: var(--soft); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 9.5px; + line-height: 1.45; + white-space: pre-wrap; + overflow-wrap: anywhere; + overflow: auto; +} + +.zc-markdown mark, +.zc-pre mark { + background: color-mix(in srgb, var(--cat-tools) 35%, transparent); + color: inherit; + border-radius: 2px; +} + +.zc-attachment { + display: flex; + gap: 9px; + align-items: center; + padding: 9px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); +} + +.zc-attachment-icon { + display: flex; + align-items: center; + justify-content: center; + width: 38px; + height: 38px; + border-radius: 8px; + background: var(--soft); + font-size: 18px; +} + +.zc-attachment > div:last-child { + display: flex; + flex-direction: column; + gap: 1px; + font-size: 10px; + color: var(--muted); +} + +.zc-attachment b { + color: var(--text); + font-size: 11px; +} + +.zc-loadmore { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 6px 8px; + border: 1px dashed var(--border-strong); + border-radius: 7px; + color: var(--muted); + font-size: 10px; +} + +.zc-event-summary { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 6px; +} + +.zc-event-stat { + display: flex; + flex-direction: column; + gap: 1px; + padding: 7px 8px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); +} + +.zc-event-stat b { + font-size: 13px; + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +.zc-event-stat span { + color: var(--muted); + font-size: 8.5px; + text-transform: uppercase; + letter-spacing: 0.02em; +} + +.zc-event-messages { + display: flex; + flex-direction: column; + gap: 5px; +} + +.zc-summary-message { + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; +} + +.zc-summary-head { + display: flex; + align-items: center; + gap: 4px; + padding: 5px 7px; + background: var(--panel-2); + border-bottom: 1px solid var(--border); + font-size: 9px; +} + +.zc-summary-part { + display: flex; + gap: 6px; + width: 100%; + padding: 5px 7px; + border: 0; + border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent); + background: transparent; + text-align: left; + color: var(--text-2); + font-size: 9.5px; + min-width: 0; +} + +.zc-summary-part:hover { + background: var(--soft); +} + +.zc-summary-text { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.zc-about { + font-size: 11px; + color: var(--text-2); +} + +.zc-about p { + margin: 0; + line-height: 1.6; +} + +.zc-about-grid { + display: grid; + grid-template-columns: 150px minmax(0, 1fr); + gap: 5px 10px; + padding: 9px 10px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel-2); + font-size: 10.5px; +} + +.zc-about-grid > span { + color: var(--muted); +} + +.zc-about-grid code { + overflow-wrap: anywhere; + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 9.5px; +} + +.zc-settings-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + min-height: 32px; + padding-bottom: 7px; + border-bottom: 1px solid var(--border); +} + +.zc-settings-label { + color: var(--text-2); + font-size: 11px; + font-weight: 550; +} + +.zc-settings-row > .zc-select, +.zc-settings-row > .zc-input, +.zc-settings-row > div { + width: 190px; + max-width: 55%; +} + +.zc-settings-row > div { + display: flex; + flex-direction: column; + gap: 2px; +} + +.zc-hint { + color: var(--muted); + font-size: 9px; + line-height: 1.4; +} + +.zc-settings-actions { + display: flex; + gap: 5px; + padding-top: 4px; +} + +/* Loading / error */ +.zc-skel { + border-radius: var(--radius); + background: linear-gradient(90deg, var(--soft) 25%, var(--soft-2) 50%, var(--soft) 75%); + background-size: 200% 100%; + animation: zc-shimmer 1.6s ease infinite; +} + +@keyframes zc-shimmer { + from { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } +} + +.zc-shell { + padding: 12px; + display: flex; + flex-direction: column; + gap: 10px; +} + +.zc-skel-head { + height: 62px; +} + +.zc-skel-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 10px; +} + +.zc-skel-card { + height: 150px; +} + +.zc-skel-wide { + height: 360px; +} + +.zc-error { + margin: auto; + max-width: 360px; + padding: 30px 20px; + display: flex; + flex-direction: column; + align-items: center; + gap: 9px; + text-align: center; +} + +.zc-error-icon { + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + border-radius: 14px; + background: var(--warn-soft); + color: var(--warn); +} + +.zc-error h2 { + margin: 0; + font-size: 14px; +} + +.zc-error p { + margin: 0; + color: var(--muted); + font-size: 11.5px; + line-height: 1.55; +} + +.zc-toast { + position: fixed; + left: 50%; + bottom: 16px; + transform: translateX(-50%); + z-index: 200; + padding: 6px 11px; + border-radius: 999px; + background: var(--text); + color: var(--panel); + font-size: 10.5px; + font-weight: 600; + box-shadow: var(--shadow-lg); + animation: zc-toast-in 150ms ease; +} + +@keyframes zc-toast-in { + from { + opacity: 0; + transform: translate(-50%, 5px); + } + to { + opacity: 1; + transform: translate(-50%, 0); + } +} + +.zc-tip { + position: fixed; + z-index: 300; + width: 280px; + padding: 8px 9px; + border: 1px solid var(--border-strong); + border-radius: 9px; + background: var(--panel); + box-shadow: var(--shadow-lg); + color: var(--text); + font-size: 10px; + pointer-events: none; +} + +.zc-tip-head { + display: flex; + justify-content: space-between; + gap: 8px; + padding-bottom: 4px; + margin-bottom: 4px; + border-bottom: 1px solid var(--border); + font-size: 10px; +} + +.zc-tip-row { + display: flex; + justify-content: space-between; + gap: 8px; + color: var(--muted); + line-height: 1.6; +} + +.zc-tip-row b { + color: var(--text); + font-variant-numeric: tabular-nums; +} + +.zc-tip-parts { + display: flex; + flex-wrap: wrap; + gap: 3px 7px; + margin-top: 4px; + padding-top: 4px; + border-top: 1px dashed var(--border); +} + +.zc-tip-part { + display: inline-flex; + align-items: center; + gap: 3px; + color: var(--text-2); + font-size: 9px; +} + +.zc-tip-part i { + width: 6px; + height: 6px; + border-radius: 2px; +} + +.zc-tip-foot { + display: flex; + justify-content: space-between; + gap: 8px; + margin-top: 4px; + color: var(--faint); + font-size: 8.5px; +} + +/* Density */ +.zc-root[data-density='compact'] .zc-card { + padding: 9px 10px; +} + +.zc-root[data-density='compact'] .zc-itemrow, +.zc-root[data-density='compact'] .zc-eventrow, +.zc-root[data-density='compact'] .zc-filehead { + padding-top: 4px; + padding-bottom: 4px; +} + +/* Responsive */ +@container (max-width: 900px) { + .zc-stats-grid { + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + } + .zc-card-stats { + grid-column: 1 / -1; + } +} + +@container (max-width: 540px) { + .zc-grid { + grid-template-columns: minmax(0, 1fr); + } + .zc-col-side { + display: flex; + } +} + +@container (max-width: 760px) { + .zc-stats-grid { + grid-template-columns: minmax(0, 1fr); + } + .zc-card-stats { + grid-column: auto; + } + .zc-insight-grid { + grid-template-columns: minmax(0, 1fr); + } + .zc-kpi-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .zc-fleet-kpis { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@container (max-width: 540px) { + .zc-main { + padding: 9px; + } + .zc-stats-grid { + grid-template-columns: minmax(0, 1fr); + } + .zc-card-stats { + grid-column: auto; + } + .zc-flow { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .zc-flow::before { + display: none; + } + .zc-flow-node.tone-cost { + grid-column: span 2; + } + .zc-stepmeta { + width: 100%; + justify-content: flex-end; + } + .zc-toggles { + margin-left: 0; + } + .zc-donut-row { + flex-wrap: wrap; + justify-content: center; + } + .zc-slices { + flex: 1 1 160px; + } + .zc-event-summary { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .zc-drawer { + width: 100%; + } + .zc-about-grid { + grid-template-columns: 110px minmax(0, 1fr); + } + .zc-settings-row { + flex-wrap: wrap; + } + .zc-settings-row > .zc-select, + .zc-settings-row > .zc-input, + .zc-settings-row > div { + width: 100%; + max-width: 100%; + } + .zc-kpi-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +/* DSH-style Overview ribbon and DNA bars */ +.zc-overview-main { + display: flex; + align-items: stretch; + gap: 6px; + height: 112px; +} + +.zc-overview-axis { + display: flex; + flex-direction: column; + justify-content: space-between; + flex: 0 0 40px; + width: 40px; + padding: 1px 2px 1px 0; + color: var(--faint); + font-size: 8.5px; + text-align: right; + font-variant-numeric: tabular-nums; +} + +.zc-overview-svg { + display: block; + flex: 1 1 auto; + width: 100%; + height: 112px; + border-radius: 4px; + overflow: hidden; +} + +.zc-overview-svg polygon { + shape-rendering: crispEdges; +} + +.zc-overview-turnband { + position: relative; + height: 14px; + margin-left: 46px; + margin-top: 3px; +} + +.zc-overview-turnband span { + position: absolute; + top: 0; + padding-left: 3px; + border-left: 1px solid var(--border); + color: var(--faint); + font-size: 8px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.zc-overview-note { + margin-top: 3px; + color: var(--muted); + font-size: 9.5px; +} + +.zc-bar-dna { + display: block !important; + border-radius: 2px 2px 0 0 !important; + min-height: 1px; + image-rendering: pixelated; +} + +.zc-trend-dna { + margin-top: 9px; + padding: 8px 9px; + border: 1px solid var(--border); + border-radius: 9px; + background: var(--panel-2); +} + +.zc-trend-dna-head { + display: flex; + align-items: center; + gap: 6px; + color: var(--muted); + font-size: 9.5px; +} + +.zc-trend-dna-head b { + color: var(--text); + font-size: 10px; + text-transform: uppercase; + letter-spacing: 0.03em; +} + +.zc-trend-dna-head button { + margin-left: auto; +} + +.zc-dna-strip { + display: flex; + width: 100%; + height: 24px; + margin-top: 7px; + border-radius: 4px; + overflow: hidden; + background: var(--track); +} + +.zc-dna-band { + display: block; + height: 100%; + min-width: 1px; + border: 0; + padding: 0; + opacity: 0.95; +} + +.zc-dna-band:hover { + opacity: 1; + outline: 1px solid var(--text); + outline-offset: -1px; +} + +.zc-dna-top { + display: flex; + flex-direction: column; + gap: 1px; + margin-top: 5px; +} + +.zc-dna-toprow { + display: flex; + align-items: center; + gap: 5px; + width: 100%; + padding: 2px 3px; + border: 0; + border-radius: 4px; + background: transparent; + color: var(--text-2); + text-align: left; + font-size: 9.5px; + min-width: 0; +} + +.zc-dna-toprow:hover { + background: var(--soft); +} + +.zc-dna-toprow b { + margin-left: auto; + color: var(--muted); + font-variant-numeric: tabular-nums; + font-size: 9px; +} + +.zc-brief-actual, +.zc-browser-summary { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 3px 8px; + color: var(--muted); + font-size: 9px; +} + +.zc-brief-actual { + margin-top: 3px; + padding: 3px 4px; + border-bottom: 1px dashed var(--border); +} + +.zc-brief-actual b, +.zc-browser-summary b { + color: var(--text-2); + font-size: 9.5px; + font-variant-numeric: tabular-nums; +} + +.zc-browser-summary { + padding: 4px 2px 6px; + border-bottom: 1px solid var(--border); + margin-bottom: 5px; +} + +/* Sidebar-first density (mirrors the DSH right-side Context panel) */ +.zc-header { + padding: 8px 10px 0; +} + +.zc-brand { + gap: 7px; +} + +.zc-brand-mark { + width: 27px; + height: 27px; + border-radius: 8px; +} + +.zc-title { + font-size: 13px; +} + +.zc-session-title { + font-size: 11.5px; +} + +.zc-session-meta { + font-size: 10px; + gap: 2px 7px; +} + +.zc-tabs { + margin-top: 5px; +} + +.zc-tab { + padding: 6px 9px 7px; + font-size: 11.5px; +} + +.zc-stepbar { + padding: 6px 0 7px; + gap: 6px; + flex-wrap: nowrap; + overflow-x: auto; + scrollbar-width: none; +} + +.zc-stepbar::-webkit-scrollbar { + display: none; +} + +.zc-stepnav { + flex: 1 1 210px; + min-width: 160px; +} + +.zc-step-select { + height: 26px; + font-size: 11px; +} + +.zc-stepstatus { + flex-wrap: nowrap; + gap: 4px; +} + +.zc-pin { + font-size: 9.5px; +} + +.zc-stepmeta { + font-size: 9.5px; + white-space: nowrap; +} + +.zc-main { + padding: 9px 10px 14px; +} + +.zc-context { + gap: 8px; +} + +.zc-card { + padding: 9px 10px; +} + +.zc-card-head { + margin-bottom: 7px; +} + +.zc-card-title { + font-size: 11.5px; +} + +.zc-summary-strip { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 4px 10px; + padding: 5px 8px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--panel); + box-shadow: var(--shadow); + color: var(--muted); + font-size: 9px; + line-height: 1.3; +} + +.zc-summary-item { + display: inline-flex; + align-items: baseline; + gap: 4px; + white-space: nowrap; +} + +.zc-summary-item b { + color: var(--text-2); + font-size: 10px; + font-variant-numeric: tabular-nums; +} + +.zc-summary-toggle { + display: inline-flex; + align-items: center; + gap: 3px; + margin-left: auto; + padding: 2px 5px; + border: 1px solid var(--border); + border-radius: 5px; + background: var(--panel-2); + color: var(--muted); + font-size: 9px; +} + +.zc-summary-toggle:hover, +.zc-summary-toggle.is-active { + background: var(--soft); + color: var(--text); +} + +.zc-detail-tabs { + display: flex; + gap: 3px; + padding: 3px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--soft); +} + +.zc-detail-tab { + flex: 1 1 0; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 5px; + min-width: 0; + padding: 5px 6px; + border: 1px solid transparent; + border-radius: 6px; + background: transparent; + color: var(--muted); + font-size: 9.5px; + white-space: nowrap; + overflow: hidden; +} + +.zc-detail-tab b { + padding: 0 4px; + border-radius: 999px; + background: var(--panel); + color: var(--faint); + font-size: 8.5px; + font-weight: 600; +} + +.zc-detail-tab:hover { + color: var(--text); +} + +.zc-detail-tab.is-active { + border-color: var(--border); + background: var(--panel); + color: var(--accent-text); + font-weight: 650; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.05); +} + +.zc-card-donut .zc-donut-row { + align-items: flex-start; + gap: 14px; +} + +.zc-card-donut .zc-donut-wrap { + margin-top: 3px; +} + +.zc-card-donut .zc-slices { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); + gap: 3px 14px; + flex: 1 1 auto; +} + +.zc-card-donut .zc-slice { + grid-template-columns: 7px minmax(0, 1fr) auto auto; +} + +.zc-card-donut .zc-slice-count { + grid-column: auto; + margin-top: 0; +} + +.zc-card-current, +.zc-card-trend, +.zc-card-browser, +.zc-card-events, +.zc-card-files { + width: 100%; +} + +@container (max-width: 540px) { + .zc-summary-strip { + gap: 3px 8px; + } + + .zc-summary-toggle { + margin-left: 0; + } + + .zc-detail-tab { + font-size: 9px; + padding: 5px 3px; + } + + .zc-card-donut .zc-slices { + grid-template-columns: minmax(0, 1fr); + } +}